Máquina virtual Java: cargador de clases
La JVM gestiona el proceso de carga, vinculación e inicialización de clases e interfaces de forma dinámica. Durante el proceso de carga, elJVM finds the binary representation of a class and creates it.
Durante el proceso de vinculación, el loaded classes are combined into the run-time state of the JVM so that they can be executed during the initialization phase. La JVM básicamente utiliza la tabla de símbolos almacenada en el grupo de constantes de tiempo de ejecución para el proceso de vinculación. La inicialización consiste en realidadexecuting the linked classes.
Tipos de cargadores
los BootStrapcargador de clases está en la parte superior de la jerarquía del cargador de clases. Carga las clases estándar de JDK en el directorio lib de JRE .
los Extension El cargador de clases está en el medio de la jerarquía del cargador de clases y es el hijo inmediato del cargador de clases de arranque y carga las clases en el directorio lib \ ext de JRE.
los Applicationcargador de clases está en la parte inferior de la jerarquía del cargador de clases y es el hijo inmediato del cargador de clases de la aplicación. Carga los frascos y clases especificadas por elCLASSPATH ENV variable.
Enlace
El proceso de vinculación consta de los siguientes tres pasos:
Verification- Esto lo hace el verificador de Bytecode para garantizar que los archivos .class generados (el Bytecode) sean válidos. De lo contrario, se produce un error y el proceso de vinculación se detiene.
Preparation - La memoria se asigna a todas las variables estáticas de una clase y se inicializan con los valores predeterminados.
Resolution- Todas las referencias de memoria simbólicas se sustituyen por las referencias originales. Para lograr esto, se utiliza la tabla de símbolos en la memoria constante de tiempo de ejecución del área de método de la clase.
Inicialización
Esta es la fase final del proceso de carga de clases. A las variables estáticas se les asignan valores originales y se ejecutan bloques estáticos.