面试题(对象在内存中的内存布局):Object o = new Object()在内存中占多少字节

本文探讨了Java中`Object o = new Object()`在内存中的占用情况,分析了对象头、类型指针和实例数据的字节占用,并讨论了压缩指针的影响。通过ClassLayout解析,展示了不同情况下对象占用的字节数。此外,还提到了markword在多线程中的作用,存储锁信息,并预告了下期将深入分析锁升级的过程。
摘要由CSDN通过智能技术生成

面试题(对象在内存中的内存布局):Object o = new Object()在内存中占多少字节

一、首先我们利用ClassLayout类去解析实例对象并打印输出并进行分析在这里插入图片描述

输出结果:
在这里插入图片描述
以上运行结果与下面这张图(对象在内存中的存储布局)一致;
markword对象头占8字节:用于存储锁信息(后续将锁升级过程中会提及)
类型指针如果采用压缩指针的方式则占4字节,没有采用压缩指针则占8字节
实例数据:由于我们这边只new了一个对象,没有设置成员变量,这边为0;假如有int类型的变量则为4字节
对齐是为了保证普通对象在内存中的所占空间始终是8字节的倍数,可以保证读效率(测试结果)

在这里插入图片描述
如何判断有没有使用压缩指针?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值