Die Grundkomponenten der Java Virtual Machine:
(Video-Tutorial-Sharing: Java-Kurs)
Klassenladesubsystem, Laufzeitdatenbereich (JVM-Speichermodell), Ausführungs-Engine, lokale Methodenschnittstelle
Klassenlader:
Hauptsächlich verantwortlich für das Laden der kompilierten .class-Bytecode-Datei in den Laufzeitdatenbereich zur Verwendung durch den Laufzeitdatenbereich.
Laufzeitdatenbereich (JVM-Speichermodell):
1. Heap: speichert hauptsächlich Objekte und wird von mehreren Threads gemeinsam genutzt (der Hauptbereich für die Speicherbereinigung).
2. Methodenbereich: speichert hauptsächlich Konstanten, statische Variablen, Klassenmetainformationen (Klassenname, Methoden, Felder, Versionen usw.).
3. Thread-Stack: Speichert Methodenparameter, lokale Variablen, Zwischenoperationsergebnisse, Objektreferenzen und stellt einige Daten bereit, die für die Funktion anderer Module usw. erforderlich sind.
4. Lokaler Methodenstapel: Der lokale Methodenstapel bedient die von der virtuellen Maschine verwendeten nativen Methoden.
5. Programmzähler: Der Zeilennummernindikator des vom aktuellen Thread ausgeführten Bytecodes. Er ist null, wenn eine lokale Methode ausgeführt wird.
Ausführungs-Engine:
Die Ausführungs-Engine ist der Kern der JVM-Ausführung von Java-Bytecode. Die Ausführungsmethoden sind hauptsächlich in Interpretationsausführung, Kompilierungsausführung, adaptive Optimierungsausführung und Hardware-Chip-Ausführung unterteilt.
Lokale Methodenschnittstelle:
Methodenschnittstelle in Nicht-Java-Sprache implementiert.
jdk1.8 JVM-Speicherstrukturdiagramm:
Unterschiede zwischen JVM-Speichermodellen vor 1.8 und 1.8:
Hauptunterschiede:
1. Der Metadatenbereich ersetzt die permanente Generierung. Das Wesen des Metaspace ähnelt dem der permanenten Generation. Sie sind beide Implementierungen des Methodenbereichs in der JVM-Spezifikation (ps: Der Methodenbereich ist eine Spezifikation in der Java Virtual Machine, und sowohl die permanente Generation als auch der Metaspace sind es eine Implementierung des Methodenbereichs).
2. Der Metadatenbereich wurde von der virtuellen Maschine in den lokalen Speicher verschoben.
3. Der Konstantenpool und die statischen Variablen in jdk1.8 wurden zur Speicherung auf den Heap verschoben (logischerweise gehören sie immer noch zum Methodenbereich)
Verwandte Empfehlungen: Erste Schritte mit Java
Das obige ist der detaillierte Inhalt vonEinführung in die Grundkomponenten der Java Virtual Machine. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!