Heim  >  Artikel  >  Java  >  Detaillierte Erläuterung der Java Virtual Machine

Detaillierte Erläuterung der Java Virtual Machine

黄舟
黄舟Original
2017-03-18 17:52:072344Durchsuche


1. Die Hauptstruktur von JVM ist wie folgt:




2. Einführung in die Funktionen jedes Bereichs


1), Methodenbereich:

(1) Gewohnt Speichern Sie von der virtuellen Maschine geladene Klasseninformationen, Konstanten , statische Variablen usw., sind von jedem Thread gemeinsam genutzte Speicherbereiche ; >

(2) Der Standard-Mindestwert beträgt 16 MB und der Maximalwert beträgt 64 MB. Sie können die Größe des Methodenbereichs durch die Parameter -XX:PermSize und -XX:MaxPermSize begrenzen; ) Es gibt auch einen Teil des Methodenbereichs, der

Laufzeitkonstantenpool

hauptsächlich zum Speichern von Literalen und Symbolen verwendet wird, die während der Kompilierung generiert werden

Referenzen. Konstanten können auch zur Laufzeit generiert werden, z die interne Methode von String; (4) Wie der Java-Heap benötigt er keinen kontinuierlichen Speicher und kann zwischen fester Größe und erweiterbarer Größe wählen. Sie können sich auch dafür entscheiden, die Garbage Collection nicht zu implementieren.

2), Stapel:

(1) Der Java Virtual Machine Stack ist Thread privat

und der

Lebenszyklus ist dasselbe wie Die Threads sind gleich. (2) Bei der Ausführung jeder Methode wird gleichzeitig ein Stapelrahmen erstellt, der zum Speichern lokaler Variablentabellen, Operationsstapel, dynamischer Links, Methodenexits und anderer Informationen verwendet wird. Die Ausführung jeder Methode entspricht dem Betreten und Verlassen des Stapelrahmens

.

(3) Die lokale Variablentabelle im Stapel der virtuellen JVM-Maschine speichert verschiedene grundlegende

Datentypen

, die zur Kompilierungszeit bekannt sind. Der für die lokale Variablentabelle erforderliche Speicherplatz wird zur Kompilierungszeit zugewiesen.

(4) Der Stapelrahmen ist die grundlegende Datenstruktur während der Methodenlaufzeit.

3), Nativer Methodenstapel:

(1) Der lokale Methodenstapel bedient die nativen Methoden, die von der virtuellen JVM-Maschine verwendet werden.

4), Heap:

(1) Der größte Speicherbereich, der von der Java Virtual Machine verwaltet wird.

(2) Der Java-Heap ist ein von allen Threads gemeinsam genutzter Bereich und wird beim Start der virtuellen Maschine erstellt.

(3) Der einzige Zweck des Speicherbereichs besteht darin,

Objekt

-Instanzen zu speichern. Alle Objektinstanzen und

Arrays weisen Speicher auf dem Heap zu. (4) Der Java-Heap ist der Speicherbereich, der hauptsächlich vom JVM-Garbage-Collection-Mechanismus verwaltet wird. Der Java-Heap kann sich in einem diskontinuierlichen Speicherbereich im Speicher befinden.

5), Programmzähler:

(1) Ein relativ kleiner Speicherplatz, dessen Funktion als Zeilennummerangabe des vom aktuellen Thread ausgeführten Bytecodes angesehen werden kann. Zähler

(2) Wenn der Bytecode-Interpreter funktioniert, ändert er den Wert dieses Zählers, um die nächste auszuführende Bytecode-Anweisung, Verzweigung, Schleife , Sprung, Ausnahmebehandlung, Thread-Wiederherstellung usw. müssen sich alle auf den Programmzähler verlassen.

6), Laufzeitkonstantenpool:

(1) Der Laufzeitkonstantenpool ist Teil des Methodenbereichs.

(2) Zusätzlich zu der Klassenversion, den Feldern, der Beschreibung der Methode

Schnittstelle und anderen Informationen in der Klasse-Datei gibt es auch einen konstanten Pool zur Speicherung Verschiedener Während der Kompilierung generierte Literale und Symbolreferenzen werden nach dem Laden der Klasse im Laufzeitkonstantenpool im Methodenbereich gespeichert

.

7), direkter Speicher:

Da Java NIO und die IO-Methode für Kanal und Puffer eingeführt hat, können Sie die native Methode aufrufen, um Off-Heap direkt zuzuweisen Dieser Off-Heap-Speicher ist lokaler Speicher und hat keinen Einfluss auf die Größe des Heap-Speichers.

Verwandte Artikel:

Detailliertes Verständnis der Java Virtual Machine

Java Virtual Machine Learning – Klassenlademechanismus

Java Virtual Machine Learning – Zuweisung und Recycling von Objektspeicher

Java Virtual Machine Learning – Objektzugriff

Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung der Java Virtual Machine. 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