面试题(对象在内存中的内存布局):Object o = new Object()在内存中占多少字节
一、首先我们利用ClassLayout类去解析实例对象并打印输出并进行分析
输出结果:
以上运行结果与下面这张图(对象在内存中的存储布局)一致;
markword对象头占8字节:用于存储锁信息(后续将锁升级过程中会提及)
类型指针如果采用压缩指针的方式则占4字节,没有采用压缩指针则占8字节
实例数据:由于我们这边只new了一个对象,没有设置成员变量,这边为0;假如有int类型的变量则为4字节
对齐是为了保证普通对象在内存中的所占空间始终是8字节的倍数,可以保证读效率(测试结果)
如何判断有没有使用压缩指针?