类加载过程

[color=darkblue][b] 类[/b][/color]从被加载到虚拟机内存中开始,到卸载出内存为止,它的整个生命周期包括了:加载、验证、准备、解析、初始化、使用、卸载共7个阶段。

加载、验证、准备、初始化和卸载这5个阶段顺序是一定的,类的解析阶段则不一定。

[color=darkred]验证、准备、解析[/color]均属于类加载阶段的连接阶段。

1、类加载的过程
加载阶段是类加载过程的一个阶段,不要被混淆,在加载阶段需完成:
1)通过一个类的全限定名来获取定义此类的二进制字节流。
2)将这个字节流所代表的静态存储结构转化为方法区的运行时数据结构。
3)在Java堆中生成一个代表这个类的java.lang.Class对象,作为方法区这些数据的访问入口。

2、验证
是连接阶段的第一步,确保Class文件的字节流中包含的信息符合当前虚拟机的要求,并且不会危害虚拟机自身的安全。

3、准备
正式为类变量分配内存并设置类变量初始化的阶段,这些内存将在方法区进行分配。进行内存分配的仅包含类变量(被static修饰的变量),而不包括实例变量,实例变量将会在对象实例化时随着对象一起分配到Java堆中。这里的初始值“通常情况”是数据类型的零值。真正的赋值应该在初始化阶段才会被执行。

4、解析
此阶段是虚拟机将常量池中的符号引用替换为直接引用的过程。
符号引用--转变为-->直接引用。

5、初始化
到了这阶段,才真正执行类中定义的Java程序代码(或者说是字节码)。
在准备阶段已经赋过一次系统要求的初始值,而在初始化阶段,则是根据程序员通过程序制定的主观计划去初始化类变量和其他资源。
初始化阶段是执行类构造器<clint>()方法的过程。

6、使用(略)

7、卸载(略)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值