01-关于new Object()的问题

本文探讨了Java中对象的内存存储布局,包括对象头、类型指针、实例数据和对齐字节的详细解释。同时,分析了`new Object()`在内存中占用的空间,以及对象的创建过程。此外,还讨论了HotSpot虚拟机为什么不使用C++对象表示Java对象,以及DCL(Double Check Lock)单例模式中volatile的重要性。
摘要由CSDN通过智能技术生成

美团面试题关于Object o = new Object()的几个问题。

1、对象在内存中的存储布局?

实例化一个对象,在堆区开辟一段空间。

 堆区由markword、类型指针(class point)、实例数据、对齐组成。

markword:由8个字节组成。

类型指针(class point):就是指向某class文件的指针,本来是8个字节,压缩后变成4个字节。一般项目4个字节足够了。

实例数据:就是成员变量等占用的字节。

对齐:占8个字节也就是64位对齐。前面markword、类型指针(class point)、实例数据的字节数加起来和8取整,不足的使用0填充补齐。

string成员变量:他是一个指针,指向的是常量区的地址。本来是8个字节,通过压缩后变成了4个字节。

2、Object o = new Object()在内存中占用名少字节?

通过上面的分析,对象头占用8个字节,类型指针

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值