Java类加载生命周期包含加载、验证、准备、解析、初始化五个固定顺序的核心阶段:加载读取字节码并生成Class对象;验证确保字节码安全;准备为静态变量分配内存并设初始值;解析将符号引用转为直接引用;初始化执行<clinit>方法完成静态赋值与代码块。

Java 中类加载机制的生命周期包含 加载、验证、准备、解析、初始化 这五个核心阶段。
这五个阶段构成了类从字节码进入 JVM 到具备可执行状态的关键路径,顺序固定、不可跳过,且多数情况下按序开始(但允许交叉执行)。
加载
根据类的全限定名定位并读取.class文件的二进制字节流,将其转换为方法区的运行时数据结构,并在堆中生成一个java.lang.Class对象作为访问入口。这是唯一允许自定义类加载器介入的阶段。验证
确保加载的字节码符合 JVM 规范,不危害虚拟机安全。包括文件格式校验、元数据验证、字节码验证和符号引用验证等子步骤。准备
为类的静态变量(static字段)分配内存,并设置初始值(如int类型设为0,引用类型设为null)。注意:此时不执行 Java 代码,也不调用<clinit>方法。解析
将常量池内的符号引用(如类名、字段名、方法名)替换为直接引用(内存地址或偏移量)。该阶段可延迟到初始化之后,以支持动态绑定(如多态调用)。初始化
执行类构造器<clinit>方法,真正运行 Java 代码。包括静态变量赋值语句、静态代码块。这是类加载过程的最后一步,也是类真正“可用”的标志。
使用和卸载虽属完整生命周期的一部分,但由 JVM 运行时与 GC 自动管理,开发者无法主动触发或干预,因此不列为“核心阶段”。


















