Java虚拟机如何加载Class文件

前面两篇博客,我详细的讲解下Java主动内存管理的一些情况,如果想要更深入的了解Java虚拟机的运行机制的话,我建议可以阅读下《深入理解Java虚拟机》这本书。而这篇博客主要记录的是Java虚拟机是如何把.class文件加载到内存,具体的加载过程是怎么样的呢?请看下面的详细讲解。
首先,必须得明白类加载机制大致原理:虚拟机把描述类的数据从CLASS文件加载到内存,并对数据进行校验,转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型。
再次,必须得记住类加载的时机。类加载的生命周期:加载、验证、准备、解析、初始化、使用和卸载; 连接包括:验证、准备和解析; !
2)类初始化(立即)条件:加载、验证、准备已结束 A
)遇到new, getstatic, putstatic, invokestatic指令时,如果累没有进行初始化,则需要先触发其初始化;对应的场景:使用new实例化对象;读取或设置类的静态字段;调用类的静态方法;  
B)使用java.lang.reflect包的方法对类进行反射的时候;  
C)当初始化一个类的时候,如果发现其父类没有初始化,需要先触发父类初始化;  
D)当虚拟机启动时,要执行的主类,虚拟机会先初始化主类;
注意:(1)常量在编译期存入调用的常量池中,本质上没有直接引用到定义常量的类,因此不会触发定义常量的类的初始化。
下面再好好讲下加载类每一步,虚拟机做了哪些事:
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值