类加载过程详解
类加载过程详解
类的生命周期
加载 → 验证 → 准备 → 解析 → 初始化 → 使用 → 卸载
加载阶段
- 通过类全名获取类的二进制字节流
- 将字节流转化为方法区数据结构
- 在堆中生成java.lang.Class对象
验证阶段
- 文件格式验证
- 元数据验证
- 字节码验证
- 符号引用验证
准备阶段
- 分配内存
- 初始化零值
- 设置类变量初始值
1 | // 准备阶段后 public static int value = 123; value = 0 |
解析阶段
- 将符号引用转为直接引用
- 类或接口解析
- 字段解析
- 方法解析
初始化阶段
- 执行
()方法 - 赋值static变量
- 执行static代码块
1 | public class Init { |
类加载器
- 启动类加载器(Bootstrap)
- 扩展类加载器(Extension)
- 应用类加载器(App)
总结
类加载是JVM运行时的基础,理解加载过程有助于解决类冲突和优化启动性能。