Mécanisme de délégation parentale et analyse du code source du chargeur de classe

Mécanisme de délégation parentale

La délégation parentale est un processus d'enfant à parent, puis il y a un état de parent à enfant. détails comme suit :

Si un chargeur de classe reçoit une requête de chargement de classe, il ira d'abord dans son propre cache pour savoir si la classe a été chargée (findLoadedClass), et si c'est le cas, la chargera directement. Sinon, elle sera chargée par le chargeur parent. Le chargeur parent ira d'abord dans son propre cache pour savoir si la classe a été chargée. Si elle est chargée directement, sinon, elle sera chargée par le chargeur parent, et ainsi de suite jusqu'à Bootstrap ClassLoader.

S'il n'y a pas de cache de Bootstrap ClassLoader, alors Bootstrap ClassLoader jugera s'il doit être chargé par lui-même. Si c'est le cas, alors il chargera (loadClass), sinon, il laissera le sous-chargeur le charger. Et ainsi de suite, jusqu'à ce qu'il soit chargé, si le chargeur personnalisé ne peut toujours pas être chargé, une exception de classe Not found sera levée.

Avantages du mécanisme de délégation parentale

L'un des avantages de l'utilisation de la délégation parentale est, par exemple, de charger la classe java.lang.String située dans le package rt.jar, quel que soit le chargeur de classe qui charge cette classe. Au final, il est confié au chargeur de classe de démarrage de niveau supérieur pour le chargement, ce qui garantit que le même objet String est finalement obtenu lors de l'utilisation de différents chargeurs de classe.

Ci-dessous, nous illustrons à travers un exemple, nous créons une classe String comme suit :

 

La raison de ce problème est que lorsque nous exécutons le fichier String, lors du chargement, il ira progressivement à BootStrap selon le mécanisme de délégation.Puisque rt.jar contient String, alors BootStr

Je suppose que tu aimes

Origine blog.csdn.net/huanfeng_AI/article/details/132072777
conseillé
Classement