Java 类加载机制
类加载机制是将类加载到 Java 虚拟机(JVM)中的一种机制,主要分为装载、链接和初始化三个阶段。其中,链接阶段又细分为验证、准备和解析三个子阶段。
装载(Loading)
装载是查找并导入 class 文件的过程:
- 通过类的全限定名获取定义此类的二进制字节流。全限定名用于唯一标识一个类或接口,例如
java.util.ArrayList。 - 将字节流代表的静态存储结构转化为方法区的运行时数据结构。
- 在 Java 堆中生成一个代表该类的
java.lang.Class对象,作为访问方法区数据的入口。
链接(Linking)
验证(Verification)
确保字节码文件完全正确,包括:
- 文件格式验证:确保符合 Class 文件格式规范。
- 元数据验证:检查类、方法和字段的定义是否符合语言规范。
- 字节码验证:确保指令序列合法,如跳转目标有效、堆栈操作规范。
- 符号引用验证:确保引用的合法性,如方法参数和返回值匹配。
准备(Preparation)
为类的静态变量分配内存,并将其初始化为默认值(零值)。
解析(Resolution)
将类中的符号引用转换为直接引用。
- 符号引用:以一组符号来描述目标,如字面量形式。
- 直接引用:直接指向目标对象在 JVM 内存中的物理位置,如指针、偏移量等。
初始化(Initialization)
初始化阶段是执行 方法的过程,主要进行用户定义的静态变量的赋值和静态代码块的执行。

