JVM verfügt über drei Klassenlader, einen benutzerdefinierten Lader, von oben nach unten:
Bootstrap ClassLoader Dieser Klassenlader lädt die JDK-Kernklassenbibliothek, wenn die Java Virtual Machine startet. In den Speicher laden
Erweiterung classLoader Erweiterungsklassenlader, eine Klassenbibliothek, die einige JRE-JARs lädt
System classLoader Systemklassenlader, der den Klassenpfad lädt Geben Sie die Klassenbibliothek in den Speicher ein
Benutzerdefinierter Klassenlader. Der Klassenlader liegt in der Verantwortung des Programmierers selbst. Während der Ausführung des Programms werden Klassendateien dynamisch über die Unterklasse von java.lang.classLoader geladen.
Lademechanismus:
Der Java-Klassenlademechanismus wird als übergeordneter Delegationsmechanismus bezeichnet: Wenn eine Anfrage an den Loader für eine Klasse gestellt wird, fragt dieser zunächst von unten nach oben ab, ob die Klasse in den Speicher geladen wurde Wird geladen, wird die Klasse direkt zurückgegeben. Wenn der aktuelle Lader noch über eine übergeordnete Klasse verfügt, delegieren Sie ihn erst dann an die nächsthöhere Ebene, wenn die übergeordnete Klasse vorhanden ist Die Klasse kann nicht geladen werden. Sie kehrt zur nächsten Ebene zurück, bis sie geladen wird. Wenn sie nicht geladen werden kann, wird eine Ausnahme „Klasse nicht gefunden“ (ClassNotFoundException) zurückgegeben. Beispiel: Wenn der benutzerdefinierte Loader zum Laden der Klasse java.lang.String erforderlich ist, wird zum Laden tatsächlich der Bootstrap-ClassLoader verwendet. Da java.lang.String die Kernbibliotheksklasse von JDK ist, wenn die Klasse benutzerdefiniert ist Wenn der Loader verwendet wird, wird er zuerst an den Loader der übergeordneten Klasse geladen.
Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung des Klassenlademechanismus classLoader in der JAVA-Entwicklung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!