Dieser Artikel bietet Ihnen eine detaillierte Einführung in den Java-Klassenladeprozess. Ich hoffe, dass er für Freunde hilfreich ist.
Der Prozess von Java-Dateien von der Codierung bis zur endgültigen Ausführung:
Die virtuelle JVM-Maschine lädt die Klasseninformationen in der .class-Datei in den Speicher und analysiert sie, um die entsprechende Datei zu generieren Klassenobjekt. Die JVM lädt nicht alle Klassen von Anfang an in den Speicher, sondern lädt sie nur, wenn sie zum ersten Mal und nur einmal auf eine Klasse trifft, die ausgeführt werden muss.
Klassenbytecodedateien aus verschiedenen Quellen über den Klassenlader in den Speicher laden
JVM Drei Dinge, die es zu erreichen gilt
Klassenlader
Der Prozess des Zusammenführens des Binärcodes der Java-Klasse in den Betriebszustand der JVM
Stellen Sie sicher, dass der geladene Bytestream den Spezifikationen der virtuellen Maschine entspricht und keine Sicherheitsfehler verursacht
Überprüfungsklassifizierung
Reservieren Sie Speicher für Klassenvariablen (Hinweis: keine Instanzvariablen) und weisen Sie Anfangswerte zu (die Standardanfangswerte der Java Virtual Machine entsprechend den verschiedenen Variablen). Typen)
Standardanfangswert
Der Prozess des Ersetzens von Symbolreferenzen im Konstantenpool mit direkter Referenz
Symbolreferenz: eine Zeichenfolge, aber diese Zeichenfolge enthält einige relevante Informationen, die eine Methode, eine Variable oder eine Klasse eindeutig identifizieren können
Direktreferenz: kann verstanden werden als eine Speicheradresse oder eine Offset-Menge
Rufen Sie nun beispielsweise die Methode hello() auf, die Adresse dieser Methode lautet 1234567, dann ist hello eine symbolische Referenz, 1234567 ist eine direkte Referenz
Während der Analysephase wird die virtuelle Maschine die symbolischen Referenzen von Klassennamen, Methodennamen und Feldnamen durch spezifische Speicheradressen oder Offsets ersetzen, d. h. direkte Referenzen auf die
zu Klassenvariablen (durch statische Variablen oder Anweisungen geändert) Initialisierung ist der Prozess der Ausführung des Klassenkonstruktors
Initialisierungsprozess
Das obige ist der detaillierte Inhalt vonDetaillierte Einführung in den Ladevorgang von Java-Klassen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!