Java Virtual Machine - Klassenladeprogramm

Die JVM verwaltet das Laden, Verknüpfen und Initialisieren von Klassen und Schnittstellen auf dynamische Weise. Während des Ladevorgangs wird dieJVM finds the binary representation of a class and creates it.

Während des Verknüpfungsprozesses wird die loaded classes are combined into the run-time state of the JVM so that they can be executed during the initialization phase. Die JVM verwendet grundsätzlich die im Laufzeitkonstantenpool gespeicherte Symboltabelle für den Verknüpfungsprozess. Initialisierung besteht eigentlich ausexecuting the linked classes.

Arten von Ladern

Das BootStrapDer Klassenladeprogramm befindet sich oben in der Klassenladeprogrammhierarchie. Es lädt die Standard-JDK-Klassen in das lib- Verzeichnis der JRE .

Das Extension Der Klassenladeprogramm befindet sich in der Mitte der Klassenladeprogrammhierarchie und ist das unmittelbare untergeordnete Element des Bootstrap-Klassenladeprogramms und lädt die Klassen in das lib \ ext-Verzeichnis der JRE.

Das ApplicationDer Klassenladeprogramm befindet sich am Ende der Klassenladeprogrammhierarchie und ist das unmittelbare untergeordnete Element des Anwendungsklassenladeprogramms. Es lädt die von derCLASSPATH ENV Variable.

Verknüpfen

Der Verknüpfungsprozess besteht aus den folgenden drei Schritten:

Verification- Dies wird vom Bytecode-Prüfer durchgeführt, um sicherzustellen, dass die generierten .class-Dateien (der Bytecode) gültig sind. Wenn nicht, wird ein Fehler ausgegeben und der Verknüpfungsprozess wird angehalten.

Preparation - Der Speicher wird allen statischen Variablen einer Klasse zugewiesen und mit den Standardwerten initialisiert.

Resolution- Alle symbolischen Speicherreferenzen werden durch die Originalreferenzen ersetzt. Zu diesem Zweck wird die Symboltabelle im Laufzeitkonstantenspeicher des Methodenbereichs der Klasse verwendet.

Initialisierung

Dies ist die letzte Phase des Klassenladevorgangs. Statischen Variablen werden Originalwerte zugewiesen und statische Blöcke ausgeführt.