Der Speicherbereich, den die virtuelle JVM-Maschine verwenden muss, ist im Großen und Ganzen der Heap und der Stack. Die tatsächlichen Unterschiede sind wie folgt >Erste Abbildung 1:
Im Allgemeinen ist es
Javas Speichermodell
Das Speichermodell ist in Heap unterteilt Speicher (Heap) und Methodenbereich (manchmal auch Nicht-Heap genannt) und Stapel
Der Heap ist in die neue Generation (Young) und die alte Generation (old/Tenured) unterteilt
Der Die neue Generation ist im Standardverhältnis 8: 1:1 von Eden Space, von Survivor Space zu Survivor Space unterteilt.
Wenn die Garbage Collection durchgeführt wird, werden die überlebenden Objekte aus Eden und Survivor von auf den Servivor kopiert zum Leerzeichen
Dann von und zum Leerzeichen Austausch (Wenn die Objekte im Von-Bereich alt genug sind, dh die Anzahl der markierten Male erreicht das alte Niveau, werden sie zur alten Generation verschoben)
Die Speichergrößen-Einstellungsparameter können wie folgt sein: Bildbeschreibung
-XMS: der minimale Speicherplatz des Heaps
-XMX: der maximale Speicherplatz des Heaps
-PermSize: der minimale Speicherplatz des Methodenbereichs
-MaxPermSize: Der maximale Speicherplatz des Methodenbereichs
-Xss: Stapelspeicherplatz jedes Threads
- newSize: der minimale Speicherplatz der neuen Generation
-maxNewSize: der maximale Speicherplatz von die neue Generation
Der Speicher der alten Generation kann durch Festlegen der Groß- und Kleinschreibung des Heaps und der Größe der neuen Generation gesteuert werden
Speicher der alten Generation = Heap-Speicher - Speicher der neuen Generation
Stack
Der Programmzähler
Private Threads steuern die Anzahl der vom Bytecode ausgeführten Zeilen. Beim Aufruf der lokalen Methode (nativ) erhält der Bytecode-Interpreter die Bytecode-Anweisung, die durch Ändern der Zeilennummer des Zählers während der Arbeit ausgeführt werden soll. Der Zähler ist leer, wenn eine native Methode (nativ) aufgerufen wird. Stack-Frame wird zum lokalen Speichern verwendet Variablen, Operandenstapel, dynamische Links, Methodenexits und andere Informationen
Lokale Variablentabelle: Basisdatentypen, Objektreferenzen, Long- und Double-Typen belegen zwei lokale Variablenräume
Jedes Mal, wenn eine Methode vorhanden ist aufgerufen, Parameter werden auf den Stapel verschoben
Lokaler Methodenstapel
Thread privat Beim Aufrufen der nativen Methode
Heap:
Heapspeicher, Objektinstanz und Arrays werden hier gespeichert
Der Heap wird in neue unterteilt Generation und die alte GenerationIm Generationensammlungsalgorithmus wird die neue Generation in den Eden-Raum, den Überlebensraum und den Überlebensraum unterteilt. Das Speicherverhältnis zwischen den beiden beträgt 8:1:1
Methodenbereich, statische Variablen und Just-in-Time-kompilierter Code
Unter dem Methodenbereich befindet sich auch ein Laufzeitkonstantenpool: Speichern von während der Kompilierung generierten Literalen und Symbolreferenzen
Referenz-Blogbeitrag
Hier testen wir Sie :
Welche Kursinformationen werden im Artikel erwähnt? Welche wörtlichen und symbolischen Referenzen werden während der Kompilierung generiert?
Das obige ist der detaillierte Inhalt vonDetaillierte Einführung in den Java-Speicherbereich von JVM. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!