类装载的执行过程

类装载的执行过程

主要分为了七个阶段

加载

通过类的全名,获取类的二进制数据流

解析类的二进制数据流存入到方法区

创建一个java.lang.Class类的实例,表示该类型,作为方法区这个类各种数据的访问入口,类的.class对象存在JVM堆中

验证

校验类是否符合JVM规范,做安全性检查

分为

文件格式检查(格式验证)

元数据验证(格式验证)

字节码验证(格式验证)

符号引用验证(安全性验证,检查符号引用(eg:#1)指向的类或者方法是否存在)

准备

为类变量分配内存并设置类变量的初始值

如果是普通静态变量,会在准备阶段分配空间(设置默认值),赋值会在初始化阶段去完成

如果是(值已经确定的)final静态基本类型变量或者字符串常量,会在准备阶段进行赋值

如果是final静态引用类型变量,也会在初始化阶段完成赋值

解析

把类中的符号引用转为直接引用

将类字节码文件中的符号引用变为直接指向需要执行方法的指针

初始化

对类的静态变量和静态代码块进行初始化操作

多个静态变量和静态代码块会按照自上而下的顺序依次初始化

如果父类没有初始化会先初始化父类

使用

执行类的程序代码(使用new创建对象或者直接使用静态成员)

卸载

程序代码执行完毕后就会进行卸载

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值