JVM虚拟机类加载机制-过程

15 篇文章 0 订阅

虚拟机类加载机制

1. 类的生命周期:

  加载、验证、准备、解析、初始化、使用、卸载七个阶段,其中验证、准备、解析三个阶段统称为连接。


其中,解析的阶段的时机并不一定。

2. Java类加载的时机:

 Java类加载的时机Java虚拟机规范并没有强调,但是对于初始化阶段,虚拟机规范则严格限定了有且只有5种情况必须立即对类进行初始化:



这五种场景的行为称为对一个类进行主动引用。

3. 类加载的过程:

  ①加载:在加载阶段,虚拟机需要做一下三件事情:


②验证:验证的目的是为了确保Class文件的字节流中包含的信息符合当前虚拟机的要求,并且不会危害虚拟机自身的安全。主要包括:

 ⑴




⑶字节码验证:字节码验证是整个验证过程最复杂的阶段,主要目的是通过对数据流和控制流的分析,确定程序语义是否是合法的、符合逻辑的。


③准备:

  准备阶段是给类变量分配内存并设置类变量初始值的阶段,这些变量使用的内存都将在方法区中进行分配。首先需要强调的是,这时候进行内存分配的只有类变量(静态变量),不包括实例变量。其次,这里所说的初始值“通常情况”下是该类型数据的零值,假设一个类变量定义为:public static int value=123; ,那么value在准备阶段后的值是0而不是123,把value赋值为123是在类构造器<cinit>()方法中才开始做的,也就是在初始化阶段才开始执行。基本数据类型的零值如下:



④解析:解析阶段是把常量池内的符号引用替换为直接引用的过程。

⑤初始化:初始化是类加载过程的最后一个阶段,初始化阶段是执行类构造器<cinit>()方法的过程。


 




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值