JVM(三):对象的创建过程是怎样的?

4 篇文章 0 订阅

对象的创建过程中一般会包括以下几个步骤:

1):当虚拟机接收到一条new创建对象指令时,会先检查以下在常量池中是否能够找到这个对象的符号引用。

2):判断这个类是否被虚拟机加载,解析和初始化。

3):在堆中为这个对象分配空间,分配空间的方式有以下2种:

   a.指针碰撞: 包含开辟空间跟移动指针2个步骤

   b.空闲列表:包含开辟空间跟修改空闲列表2 个步骤

   以上2中分配空间的方式会导致非原子操作带来的并发问题,所以在JVM中会通过CAS机制加上失败重试机制确保该操作的原子性

4):初始化分配的内存空间为0及类字段类型的默认值

5):设置对象的对象头相关数据(GC分代年龄,对象hashcode,元数据信息),对象结构包含以下3个部分:

  a.对象头:存储了对象的元数据信息

  b.实例数据:存储的是真实有效的数据,如各种字段内容

  c.对齐填充:起到占位符作用

6):执行对象的init()方法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值