01-关于new Object()的问题

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

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

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

01-关于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个字节,类型指针是4个字节,加起来是12个字节

你可能感兴趣的:(08-面试,jvm)