如何判断一个对象占用多少字节?这是我之前遇到的一个面试题,在这里分享一下。 要判断一个对象占用多少字节,对象内存布局是必须要了解的。
在HotSpot虚拟机里对象内存布局分为3个部分:对象头(Header)、实例数据(Instance Data)和对齐填充(Padding)
对象头包括两部分信息:
Mark Word的32个比特存储空间中的25个比特用于存储对象哈希码, 4个比特用于存储对象分代年龄,2个比特用于存储锁标志位,1个比特固定为0。
HotSpot源码 markOop.hpp 注释片段,描述了Mark Word的内存布