Mecanismo de delegación de padres y análisis del código fuente del cargador de clases

Mecanismo de Delegación de Padres

La delegación de padres es un proceso de hijo a padre, y luego hay un estado de padre a hijo. detalles de la siguiente manera:

Si un cargador de clases recibe una solicitud de carga de clases, primero irá a su propio caché para averiguar si la clase se ha cargado (findLoadedClass) y, de ser así, la cargará directamente. De lo contrario, será cargado por el cargador principal. El cargador principal primero irá a su propio caché para averiguar si la clase se ha cargado. Si se carga directamente, si no, será cargada por el cargador principal. y así sucesivamente hasta Bootstrap ClassLoader.

Si no hay caché de Bootstrap ClassLoader, entonces Bootstrap ClassLoader juzgará si debe cargarse por sí mismo, si es así, luego cárguelo por sí mismo (loadClass), si no, deje que el subcargador lo cargue. Y así sucesivamente, hasta que se cargue, si el cargador personalizado aún no se puede cargar, se lanzará una excepción de clase No encontrada.

Beneficios del Mecanismo de Delegación Parental

Uno de los beneficios de usar la delegación parental es, por ejemplo, cargar la clase java.lang.String ubicada en el paquete rt.jar, sin importar qué cargador de clases cargue esta clase. Al final, se confía al cargador de clases de inicio de nivel superior para la carga, lo que garantiza que finalmente se obtenga el mismo objeto String cuando se utilizan diferentes cargadores de clases.

A continuación ilustramos a través de un ejemplo, creamos una clase String de la siguiente manera:

 

El motivo de este problema es que cuando ejecutamos el archivo String, al cargarlo, irá gradualmente a BootStrap de acuerdo con el mecanismo de delegación. Dado que rt.jar contiene String, entonces BootStr

Supongo que te gusta

Origin blog.csdn.net/huanfeng_AI/article/details/132072777
Recomendado
Clasificación