JVM(Java虚拟机)的类加载机制是Java语言实现“一次编写,到处运行”以及动态扩展的基础。一个类的完整生命周期包含 7 个阶段,分别是:加载(Loading)、验证(Verification)、准备(Preparation)、解析(Resolution)、初始化(Initialization)、使用(Using)和卸载(Unloading)。 其中,验证、准备、解析这三个阶段统称为链接(Linking)。 为了方便记忆,你可以按照这个流程图来理解: 下面我为你详细拆解每一个阶段的核心任务和底层原理。 --- 1. 加载(Loading) 任务: 把 文件(二进制字节流)搬到内存里,并在堆中生成一个代表这个类的 对象。 具体步骤: 1. 通过类的全限定名获取定义此类的二进制字节流。 (注意:JVM并没有规定必须要从本地 文件中获取,它可以来自 ZIP/JAR 包、网络传输、动态代理生成(如 CGLib)、JSP 编译等。) 2. 将这个字节流代表的静态存储结构转化为方法区(JDK 8 之后的元空间)的运行时数据结构。 3. 在内存(堆区)中生成一个代表这个类的 对象,作为程序...