Native Heapspeicher und Java-Heapspeicher

Die JVM verwaltet zwei Speicherbereiche, den Java™ -Heapspeicher und den nativen (oder System-) Heapspeicher. Diese beiden Heapspeicher dienen jeweils einem anderen Zweck und werden durch verschiedene Mechanismen verwaltet.

Der Java-Heapspeicher enthält die Instanzen von Java-Objekten und wird häufig als 'Heapspeicher' bezeichnet. Es ist der Java-Heapspeicher, der von der Garbage-Collection verwaltet wird, und es ist der Java-Heapspeicher, der durch die Einstellungen des Befehlszeilenzwischenspeichers geändert wird. Der Java-Heapspeicher wird mit mmap oder shmat zugeordnet, wenn die Unterstützung großer Seiten angefordert wird. Die maximale Größe des Java-Heapspeichers wird während des JVM-Starts als ein zusammenhängender Bereich zugeordnet, auch wenn die Einstellung für die Mindestgröße des Heapspeichers niedriger ist. Durch diese Zuordnung kann die durch die Einstellung für die Mindestgröße des Heapspeichers festgelegte Begrenzung für die Größe des künstlichen Heapspeichers auf die tatsächliche Größe des Heapspeichers mit Heapspeichererweiterung umgestellt werden. Weitere Informationen finden Sie unter Memory management in der J9 VM-Referenz .

Der native Heapspeicher oder der Systemheapspeicher wird mithilfe des zugrunde liegenden malloc-Mechanismus und des freien Mechanismus des Betriebssystems zugeordnet und für die zugrunde liegende Implementierung bestimmter Java-Objekte verwendet. Beispiel:
  • Motif-Objekte, die von AWT (Abstract Window Toolkit) und Swing benötigt werden
  • Puffer für Datenkomprimierungsroutinen, bei denen es sich um den Speicherplatz handelt, den die Java-Klassenbibliotheken benötigen, um komprimierte Daten wie ZIP-oder JAR-Dateien zu lesen oder zu schreiben.
  • Malloc-Zuordnungen nach JNI-Anwendungscode
  • Kompilierter Code, der durch den JIT-Compiler (Just-in-time) generiert wird
  • Threads für Zuordnung zu Java-Threads