JVM-JAVA对象创建的五个步骤

本文详细介绍了JAVA对象创建的五个步骤,包括类加载检查、内存分配(涉及线程安全的TLAB和CAS+失败重试策略)、初始化零值、设置对象头信息以及执行初始化方法。通过这些步骤,确保了JVM中对象的正确生成和使用。
摘要由CSDN通过智能技术生成

对象创建的五个步骤

  • 1、类加载检查

虚拟机遇到一条 new 指令时,首先将去检查这个指令的参数是否能在常量池中定位到这个类的符号引用,并且检查这个符号引用代表的类是否已被加载过、解析和初始化过。如果没有,那必须先执行相应的类加载过程。

总结为 if(new指令的参数不在常量池 || 此符号引用的类没有被加载、解析和初始化)--------->{执行相应类加载}

  • 2、分配内存

在类加载检查完成后,虚拟机为new出来的对象分配内存。
新对象需要的内存大小在类加载完成后就已经确定,现在要做的是吧一块确定大小的内存从Java堆中划分出来。
分配方式涉及到两种:
指针碰撞 空闲列表
堆内存规整时 堆内存不规整时
用过的内存放在一边,没用的放一边,中间有个分界值指针 JVM维护一个列表记录划分的内存
GC收集器:Serial、ParNew GC收集器:CMS

堆内存规整与否取决于GC收集器的算法是标记-清除、还是标记-整理

创建对象时涉及到的问题:
线程安全:先TLAB再 CAS&
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值