Heim >Java >javaLernprogramm >Detaillierte Einführung in den Java-Speicherbereich von JVM

Detaillierte Einführung in den Java-Speicherbereich von JVM

零下一度
零下一度Original
2017-06-25 09:50:431268Durchsuche
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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn