1.3 对象的内存布局

对象的内存布局分为三部分,分别是对象头,实例数据以及对齐填充

对象头包含两个部分。

    第一部分为自身的运行数据,即 Mark Word,包含哈希码,GC分代年龄,锁标志状态,线程持有的锁,偏向线程ID,偏向时间戳等。

    第二部分为类型指针,即对象指向它的类元数据的指针,虚拟机通过这个指针来确定这个对象是哪个类的实例,并不是所有的虚拟机实现都必须保留类型指针,如果是java数组,对象头中必须有一块是记录数组长度的数据

实例数据为对象真正存储的有效信息,即程序代码中所定义的各个类型的字段内容。

对齐填充不一定有,Hotspot 要求对象的大小必须是8字节的整数倍,对象头大小是8字节的1倍或2倍,如果实例数据不是8字节的整数倍时,由对齐填充部分进行补充。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容