当程序访问类的静态变量、类的静态方法或是用new来创建一个新的对象时,java虚拟机就会将相应的.class文件加载到内存中。那么,类加载的过程是什么呢?下面就是类加载的过程介绍。
1. 加载
加载是类加载过程的一个阶段,虚拟机在这个阶段会做3件事情
a. 通过一个类的全限定名来获取定义此类的二进制字节流
b. 将字节流以某一特定数据结构存入方法区
c. 在内存中生成代表这个类的class对象
2. 验证
包括文件格式验证、元数据验证、字节码验证、符号引用验证
3. 准备
为类变量分配内存并设置类变量初始值
4. 解析
将常量池中的符号引用替换为直接引用,包括类或接口的解析、字段解析、类方法解析、接口方法解析
5. 初始化
执行类的构造方法<clinit>,与我们常说的构造方法不同,我们常说的构造方法是实例构造方法<linit>。<clinit>为类的静态变量初始化,加载静态代码块。
本文介绍了Java虚拟机加载类的过程,包括加载、验证、准备、解析和初始化五个阶段,并详细解释了每个阶段的主要任务。

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



