El proceso de carga de clases en la JVM

1. ¿Qué es la carga de clases?

El proceso de cargar el archivo .class en la memoria y obtener el objeto de clase.

En segundo lugar, el proceso de carga de clases.

1. carga

Encuentre el archivo .class y lea el contenido del archivo

2. Verificación

Verifique que el archivo encontrado sea un archivo .class y que el archivo .class tenga un formato de datos claro

3. Prepárate

Asigne espacio para objetos de clase.

Tenga en cuenta que este espacio es un espacio no inicializado y los datos en el espacio de memoria son todos 0.

4. Análisis

Las referencias simbólicas en el grupo de constantes de cadena se reemplazan con referencias directas. (inicializado para constantes de cadena)

Las referencias simbólicas en el conjunto de constantes de cadena son constantes de cadena, que ya existen en el archivo .class. Estas constantes de cadena no conocen sus direcciones reales en la memoria, solo sus posiciones relativas entre sí.
Después de la inicialización, cada constante de cadena tiene su dirección real en la memoria (referencia directa), pero su posición relativa entre sí no ha cambiado. Las referencias simbólicas se sustituyen por referencias directas.

Para dar un ejemplo en la vida, supongamos que la clase se organiza para ir juntos al cine, el maestro organizará a los estudiantes para que se alineen, y Xiao Yu y Xiao Gu se alinean naturalmente juntos (referencia simbólica). Antes de entrar al teatro, Xiao Yu y Xiao Gu permanecieron en la misma fila Después de llegar al cine, cuando se dividieron en números de asiento (citas directas), naturalmente estaban uno al lado del otro. (posición relativa sin cambios).

5. Inicialización

Inicializar objetos de clase

Inicialice miembros estáticos, ejecute bloques de código estático y, si hay una clase principal, debe cargar la clase principal.

3. Cuándo cargar la clase

La carga de clases no se carga cuando no es necesaria.
Solo se cargará bajo las siguientes tres condiciones.
1. Se crea una instancia de la clase
2. Se utiliza el método estático de la clase
3. El uso de una subclase desencadena la carga de la clase principal.

4. Modelo de delegación de padres

En realidad, 'padre soltero'.

1. Tres tipos de cargadores

  • BootStrap ClassLoader carga clases en la biblioteca estándar de Java
  • Extensión ClassLoader carga el trueno en la biblioteca no estándar de Java (pero es la clase de la biblioteca extendida de Sun/Oracle)
  • La aplicación ClassLoader carga clases creadas por él mismo

2. Proceso de carga

inserte la descripción de la imagen aquí

total

Les deseo todo lo mejor, buena salud y felicidad todos los días, ¡hasta la próxima! ! !

Supongo que te gusta

Origin blog.csdn.net/m0_71690645/article/details/131705353
Recomendado
Clasificación