类加载机制是什么?
所谓类加载机制就是:JVM 虚拟机将 Class 文件加载至内存,并对数据进行校验、解析和初始化,最后形成可以被虚拟机直接使用的 Java 类型,也就是 java.lang.Class。
类加载机制的几个步骤
装载(Load)
- 通过类的全限定名称获取此类的二进制字节流;
- 将这个字节流所代表的静态数据结构转换为方法区的运行时数据结构;
- 在堆中生成一个代表这个类的 java.lang.Class 对象,作为方法区对这个类的访问入口。
链接(Link)
- 验证
用于保证被加载类的正确性,会进行文件格式、元数据、字节码、符号引用的验证。 - 准备
为类的静态变量分配内存,并初始化其默认值。 - 解析
将类中符号引用转换为直接引用,符号引用只是一组字面量,而直接引用就是直接指向目标的指针、相对偏移量或者一个间接定位到目标的句柄,即转换为目标对象的内存地址。
初始化(Initialize)
堆类的静态变量、静态代码块进行初始化操作(也就是我们给变量赋予的初始值),会执行 Clinit 方法。