Java类加载全过程

类加载全过程这个基础章节的博客也是很早之前就想做个总结的了,直奔主题

(1)加载

加载JAVA编译阶段后产生.class文件,里面有各种表,各种属性和方法描述。所以第一步进行的加载阶段,就是通过一个C++的instanceKlass加载器读取.class字节码文件,并且在元空间(方法区)生成一个.class类对象,它加载时会产生一个_JAVA_MIRROR镜像对象放在堆中。

(2)验证

校验类的字节码文件是否符合JVM虚拟机规范,比如检查头部的Cafe Babe 魔数。

(3)准备

准备阶段就是给static 静态变量分配内存空间,设置默认值,在初始化阶段才附值。
如果是static final +基本类型(int,long…) ,准备阶段分配空间同时附值。因为基本类型静态常量在编译期已经确定值,省去了初始化附值多此一举操作。
如果是static final +基本引用类型(对象,数组),则分配空间,不附值。因为new创建对象和附值操作都必须是在加载完成初始化阶段后。

(4)解析

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值