【详细图解】一个 Java 对象是如何被创建的?

本文详细介绍了Java对象的创建步骤,包括类加载检查、内存分配、初始化零值、设置对象头以及执行初始化方法。讨论了内存分配的指针碰撞和空闲列表策略,以及线程安全的保证方法如CAS和TLAB。内容参考了JavaGuide的相关面试题。
摘要由CSDN通过智能技术生成

程序员日常最喜欢的自我调侃就是,没有对象很简单啊,自己写代码 new 一个不就好了,说到这里,我们的骄傲就已经尽数体现了。

不过话说回来,一个简简单单的 new 背后,JVM 到底为我们做了些什么呢, Java 的对象具体是怎么被创建的呢,一起来看看吧。

比如我们想要创建一个 Person 对象:

Person person = new Person();

在 JVM 中的加载流程如下图所示:

Step1:类加载检查

JVM 虚拟机遇到⼀条 new 指令时,⾸先会检查在常量池中是否可以定位到这个类的符号引⽤(比如 org.simple.Person),并且检查这个符号引⽤代表的类是否已被加载、解析和初始化过。

如果没有,那必须先执⾏相应的类加载过程。

Step2:分配内存

当类加载完成后,就可以确定对象所需的内存大小了。

为对象分配空间的任务实际上就等同

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

盛夏温暖流年

可以赏个鸡腿吃嘛~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值