亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

Heim Java JavaBase Was sind die Phasen des JVM-Klassenladevorgangs?

Was sind die Phasen des JVM-Klassenladevorgangs?

Jul 27, 2021 am 11:43 AM

Klassenladevorgang: 1. Ladephase; 3. Vorbereitungsphase, die haupts?chlich Speicher zuweist und Klassenvariablen im Methodenbereich initialisiert; 5. Initialisierungsphase; In der Klassendatei deklarierte Variablen und statische Bereiche werden zusammengeführt, um die Cinit-Methode zu generieren und aufzurufen. 6. Verwendungsphase. 7. Deinstallationsphase.

Was sind die Phasen des JVM-Klassenladevorgangs?

Die Betriebsumgebung dieses Tutorials: Windows7-System, Java8-Version, DELL G3-Computer.

Um den Klassenladeprozess von JVM zu verstehen, müssen wir haupts?chlich zwei Fragen beantworten:

1 Wann wird die Klasse geladen?

2. Wie die Klasse geladen wird.

Was sind die Phasen des JVM-Klassenladevorgangs?

1. Bedingungen zum Ausl?sen des Klassenladens:

Der Klassenladeprozess ist haupts?chlich in sieben Phasen unterteilt: Laden, überprüfung, Vorbereitung, Analyse, Initialisierung, Verwendung, Entladen; Laden, überprüfung, Vorbereitung, Die Reihenfolge der fünf Prozesse zum Initialisieren und Entladen muss strikt eingehalten werden. JVM legt nicht den Zeitpunkt des Ladens der Klasse fest, schreibt jedoch strikt vor, dass die Klasse sofort initialisiert werden muss Das. .

1. Wenn Sie auf die vier Anweisungen new, getstatic, putstatic und invokestatic sto?en und die Klasse nicht initialisiert wurde, wird die Klasse zuerst initialisiert.

2. Wenn Sie die Methode des Pakets java.lang.reflect verwenden, um einen reflektierenden Aufruf an eine Klasse durchzuführen, wird ihre Initialisierung ausgel?st, wenn die Klasse nicht initialisiert wurde.

3. Wenn beim Initialisieren einer Klasse die übergeordnete Klasse der Klasse nicht initialisiert wurde, wird zuerst die Initialisierung ihrer übergeordneten Klasse ausgel?st.

4. Um die JVM auszuführen, müssen Sie eine Hauptklasse angeben, die die Hauptmethode enth?lt. Die virtuelle Maschine initialisiert diese Klasse.

5. Bei Verwendung der dynamischen Sprachunterstützung von Jdk1.7, wenn das endgültige Analyseergebnis einer java.lang.invoke.MethodHandle-Instanz das Methodenhandle von REF_getstatic, REF_putstatic, REF_inokestatic ist und die diesem Methodenhandle entsprechende Klasse hat nicht initialisiert, l?sen Sie die Initialisierung dieser Klasse aus.

2. Klassenladeprozess

Der Klassenladeprozess ist haupts?chlich in sieben Phasen unterteilt: Laden, überprüfung, Vorbereitung, Analyse, Initialisierung, Verwendung und Entladen.

1. Laden:

1) Laden Sie den einer Klasse entsprechenden Bin?rbyte-Stream über seinen vollst?ndig qualifizierten Namen. Haupts?chlich durch Klassenlader implementiert.

2) Konvertieren Sie die durch den Bytestream dargestellte statische Speicherstruktur in die Laufzeitdatenstruktur des Methodenbereichs.

3) Generieren Sie ein java.lang.Class-Objekt, das diese Klasse im Speicher darstellt und als Eingang für jede Klasse im Methodenbereich dient, um auf diese Klasse zuzugreifen. (Hotspot generiert diese Klasse im Methodenbereich).

2. überprüfung:

1), überprüfung des Dateiformats: überprüfen Sie, ob die magische Versionsnummernkonstante der Klassendatei innerhalb des von der aktuellen virtuellen Maschine unterstützten Bereichs liegt.

2), Metadatenüberprüfung: überprüfen Sie, ob die semantischen Informationen der Klasse den Anforderungen der Java-Sprachspezifikation entsprechen.

3), Bytecode-überprüfung: Stellen Sie sicher, dass die Programmsemantik legal und konform ist. Haupts?chlich durch die Stackmapframe-Struktur.

4) überprüfung der Symbolreferenz: Die virtuelle Maschine wandelt die Symbolreferenz in eine direkte Referenz um und überprüft, ob die durch den vollst?ndig qualifizierten Namen der Symbolreferenz dargestellte Klasse gefunden werden kann, ob die entsprechende Dom?ne und Methode gefunden werden kann und ob Die Zugangsberechtigung ist legal.

3. Vorbereitung:

Die Vorbereitungsphase besteht haupts?chlich darin, Speicher zuzuweisen und Klassenvariablen (modifiziert durch statische Modifikatoren) im Methodenbereich zu initialisieren.

Datentyp Nullwert Datentyp Nullwert
int 0 boolean false
long 0L float 0.0f
short 0 double 0.0d
char 'u0000' reference null
byte. 0

4. Parsing:

1) Klassen- oder Schnittstellenparsing: Konforme Referenzen in direkte Referenzen auf Klassen umwandeln und Zugriffsberechtigungen prüfen.

2) Feldanalyse: Konvertieren Sie die symbolische Referenz des Felds in die Klasseninformationen, zu der das Feld geh?rt, oder eine direkte Referenz auf das Feld seiner übergeordneten Klasse und überprüfen Sie die Zugriffsberechtigungen.

3) Parsen von Klassenmethoden: Konvertieren Sie die symbolische Referenz der Klassenmethode in die Klasseninformationen, zu denen die Klassenmethode geh?rt, oder in eine direkte Referenz auf das Feld ihrer übergeordneten Klasse und überprüfen Sie die Zugriffsberechtigungen.

4) Analyse der Schnittstellenmethode: Konvertieren Sie die symbolische Referenz der Schnittstellenmethode in die Schnittstelleninformationen, zu denen die Schnittstellenmethode geh?rt, oder in eine direkte Referenz auf das Feld ihrer übergeordneten Klasse und überprüfen Sie die Zugriffsberechtigungen.

5. Initialisierung:

In der Initialisierungsphase führt der Compiler die in der Klassendatei deklarierten statischen Zuweisungsvariablen und statischen Bereiche zusammen, um die Methode zu generieren.

Klassenlader: Ein Klassenlader ist eine Implementierung des ?Ladens des bin?ren Bytestroms einer Klasse über ihren vollst?ndig qualifizierten Namen“. Für jede Klasse wird die virtuelle Eindeutigkeit gemeinsam vom Klassenlader und der Klasse selbst bestimmt Maschine.

Parentales Delegationsmodell:

Was sind die Phasen des JVM-Klassenladevorgangs?

1. Bootstrap ClassLoader startet den Klassenlader und ist für das Laden von /lib/rt.jar verantwortlich.

2. Die Erweiterung ClassLoader erweitert den Klassenlader und ist für das Laden verantwortlich Pakete unter /lib/ext

3. Der Anwendungsklassenlader ist für das Laden der JAVA-Klassenbibliothek unter dem CLASSPATH-Pfad verantwortlich.

4. Benutzer-Klassenlader Benutzerdefinierter Klassenlader.

Das übergeordnete Delegationsmodell l?dt Klassen auf diese Weise: Wenn der Klassenlader eine Anforderung zum Laden einer Klasse erh?lt, delegiert er zun?chst die übergeordnete Klasse, um die Klasse zu laden. Alle Klassenlader verwenden diese Methode, sodass alle Klassenladeanforderungen die Klasse erreichen übergeordnete Klasse der obersten Ebene. Wenn die übergeordnete Klasse nicht geladen werden kann, verwenden Sie diesen Klassenlader, um sie zu laden. Auf diese Weise besteht eine hierarchische Beziehung zwischen den Klassenladern, die sicherstellen kann, dass die Basisklassen von Java von demselben Klassenlader geladen werden, was eine entscheidende Rolle für die Stabilit?t des Java-Systems spielt.

Empfehlungen für entsprechende Video-Tutorials: Java-Video-Tutorial

Das obige ist der detaillierte Inhalt vonWas sind die Phasen des JVM-Klassenladevorgangs?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erkl?rung dieser Website
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

Hei?e KI -Werkzeuge

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem v?llig kostenlosen KI-Gesichtstausch-Tool aus!

Hei?e Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Hei?e Themen

PHP-Tutorial
1500
86