类的加载过程总结

类的加载过程

  1. 类的加载时机

类从被加载到虚拟机内存中开始,到卸载出内存为止,它的整个生命周期包括了:加载、验证、准备、解析、初始化、使用和卸载七个阶段。其中,验证,准备,解析三个部分统称为连接。
在这里插入图片描述

四种情况必须立即对类进行初始化:

1)new 静态属性 静态方法调用

2)People.class 获取Class对象

3)加载子类时需要提前加载父类

4)启动JVM,main函数所在的类需要加载

  1. 类的加载过程

文件类型:后缀名+魔数

魔数:识别文件类型

.class字节码文件结构
在这里插入图片描述

在这里插入图片描述

.class字节码文件结构磁盘上存储的一个byte数组:4个byte魔数+4个byte主次版本号+常量池+…

第一大阶段:装载阶段-》类加载器

启动类加载器Boostrap
ClassLoader

扩展类加载器 Extension ClassLoader

应用类加载器 Application
ClassLoader

无法加载,抛出异常

ClassNotFoundException

加载类:双亲(parent)委派模型

从子类到父类依次查找之前是否加载过这个类,如果加载过,返回加载后的产物(Class对象)。如果当前类加载器没有加载过这个类,向父类继续查找。

如果一个类的加载器是启动类加载器,返回null

装载成功的产物,当前类的Class对象(保存当前类的类信息)Java堆

第二大阶段:链接阶段

验证:符合虚拟机要求,不能危害虚拟机安全

准备:给静态变量开辟内存并赋类型默认值

解析:解析阶段是虚拟机将常量池内的符号引用替换为直接引用

第三大阶段:初始化阶段

给静态变量赋值。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值