Los tres procesos del cargador de clase jvm
1. Carga
通过一个类的全限定名获取此类的二进制字节流
. Convierta la estructura de almacenamiento estática representada por este flujo de bytes en la estructura de datos en tiempo de ejecución del área de métodos
. Genere un objeto de clase que represente esta clase en la memoria como entrada de acceso para varios datos de esta clase en el área de métodos.
2. Enlace
验证
确保class文件符合当前虚拟机的要求
准备
为类变量分配内存,并设置类变量的初始值,不会给实列变量初始化
解析
将类的符号引用转化为实际引用
3. Inicialización
El proceso de inicialización es el proceso de ejecución del método constructor de clases <método clinit ()>. El compilador javac recopila automáticamente las acciones de asignación de todas las variables de la clase y las fusiona con las declaraciones en el bloque de código estático. Las
instrucciones del método constructor están en el archivo original El orden de aparición se ejecuta
. Clinit () es diferente del constructor de la clase
. La máquina virtual debe asegurarse de que los métodos de una clase se ejecuten solo una vez.