类加载的完整生命周期:7个阶段详解
引言 为什么要学习这个主题? 在第一阶段我们了解了JVM的基础架构,知道类加载子系统是JVM的重要组成部分。但你是否想过: 一个.class文件是如何一步步变成可用的Java类的? 为什么有时候类的静态变量有默认值,有时候又是我们设置的值? 类在什么时候被加载?什么时候被卸载? 理解类加载的生命周期,就像理解一个产品从原材料到成品的生产流程。这是理解Java类初始化、解决类加载问题的关键。 你将学到什么? ✅ 类加载的7个阶段及其作用 ✅ 每个阶段的详细执行过程 ✅ 验证、准备、初始化的区别 ✅ 类的卸载机制 ✅ 类加载的时机和触发条件 一、类加载的完整生命周期 1.1 七个阶段概览 .class文件 ↓ 1️⃣ 加载 (Loading) ↓ 2️⃣ 验证 (Verification) ↓ 3️⃣ 准备 (Preparation) } 链接 (Linking) ↓ 4️⃣ 解析 (Resolution) ↓ 5️⃣ 初始化 (Initialization) ↓ 6️⃣ 使用 (Using) ↓ 7️⃣ 卸载 (Unloading) 时间线: 加载 → 验证 → 准备 → 解析 → 初始化 └──────────┬──────────┘ 链接阶段 关键理解: 前5个阶段的顺序是固定的(但可以交叉进行) 解析阶段可能在初始化之后(动态绑定) 验证、准备、解析统称为"链接"阶段 二、阶段1:加载(Loading) 2.1 作用 将.class文件的二进制数据读入内存,转换成方法区的运行时数据结构,并在堆中创建一个java.lang.Class对象。 ...