Der Prozess des Ladens der JVM-Klasse: Führen Sie zuerst das Laden durch. Überprüfen Sie dann, ob die im Bytestrom der Klassendatei enthaltenen Informationen den Anforderungen der aktuellen virtuellen Maschine entsprechen Initialisieren Sie es auf den Anfangswert des Systems. Anschließend wird es analysiert und initialisiert.
JVM-Klassenladevorgang:
1. Laden
Der JVM führt beim Laden diese drei Dinge aus:
1) Erhalten Sie die Binärdatei der Klasse über den vollständig qualifizierten Namen des Klassenbytes stream
2) Konvertieren Sie die statische Speicherstruktur dieses Bytestreams in eine Laufzeitdatenstruktur im Methodenbereich
3) Generieren Sie ein java.lang.Class-Objekt, das die Klasse im Speicherheap als Daten des Klassenzugriffsportals darstellt
2. Überprüfung
Die drei Schritte Überprüfung, Vorbereitung und Analyse können als Verbindungsprozess angesehen werden, der den Bytecode der Klasse mit dem Betriebsstatus der JVM verbindet.
Die Überprüfung dient dazu, sicherzustellen, dass die Klassendatei Die im Byte-Stream enthaltenen Informationen erfüllen die Anforderungen der aktuellen virtuellen Maschine und gefährden nicht die Sicherheit der JVM. Die Überprüfung umfasst hauptsächlich die Überprüfung in den folgenden Aspekten:
1) Überprüfung des Dateiformats, Überprüfung, ob der Byte-Stream konform ist Klasse Die Spezifikation der Datei, ob sie von der aktuellen Version der virtuellen Maschine verarbeitet werden kann
2) Metadatenüberprüfung, semantische Analyse der durch den Bytecode beschriebenen Informationen, um die Einhaltung der Java-Sprachspezifikation sicherzustellen
3) Bytecode-Überprüfung Bestätigen Sie mithilfe der Datenfluss- und Steuerungsstromanalyse, dass die Semantik zulässig und logisch ist es auf den Anfangswert des Systems. Bei durch final static geänderten Variablen wird
direkt dem benutzerdefinierten Wert zugewiesen. Wie im folgenden Beispiel: Der Anfangswert nach der Vorbereitungsphase ist 0 statt 7
public static int a=7
4 Parsing
Beim Parsen wird die Symbolreferenz im Konstantenpool in eine direkte Referenz umgewandelt (z. B. Adresszeiger des physischen Speichers)
5. InitialisierungIn der Initialisierungsphase beginnt die JVM tatsächlich mit der Ausführung des in der Klasse definierten Java-Codes
1) Die Initialisierungsphase ist der Prozess der Ausführung des Klassenkonstruktors
2) Wenn Sie beim Initialisieren einer Klasse feststellen, dass die übergeordnete Klasse nicht initialisiert wurde, müssen Sie zuerst die Initialisierung der übergeordneten Klasse auslösen. 3) Die virtuelle Maschine stellt sicher, dass die
Java-Grundlagen-Tutorial
Das obige ist der detaillierte Inhalt vonWie läuft das Laden der JVM-Klasse ab?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!