类加载流程
类加载流程描述了类加载器把 class 文件加载到虚拟机的过程。class 文件像是一个模板,被加载到 JVM 之后,可以被复刻为多个实例。

类加载流程包括 “加载“,”链接“,”初始化“ 三个步骤, 其中 ”链接“ 包括了 ”验证“,”准备“,”解析“三个小步骤,最终加载到方法区。

加载
类加载过程大致可描述为三步:

- 通过获取类的全限定名来获取类的二进制字节流(以物理磁盘为例),全限定名指的是:包名+类型,如:test.World;
- 将二进制字节流表示的静态存储结构转化为方法区的运行时数据结构,用于实例化时放到运行时数据区对应的位置使用;
- 在内存中生成代表这个类的 java.lang.class 对象,作为方法区这个类的数据访问入口。
package test
class World {
}
JVM 加载类之前会提前判断该类是否已经被加载。如果被加载了,则直接跳过了加载流程。

本文详细阐述了JAVA类从加载到初始化的全过程,包括加载、链接(验证、准备、解析)和初始化阶段。在链接阶段,重点介绍了验证的目的和内容,准备阶段的类变量初始化,以及解析过程中的符号引用转化为直接引用。初始化阶段则是执行类构造器方法clinit的时机,确保类变量的正确赋值。此外,还讨论了多线程环境下类加载的同步机制。
最低0.47元/天 解锁文章
7829

被折叠的 条评论
为什么被折叠?



