java对象结构

本文详细解析了Java对象的结构,包括对象头(包含MarkWord、ClassPointer和可选的ArrayLength)、对象体(实例变量和成员变量)以及填充对齐机制,重点强调了HotSpotVM对8字节对齐的要求。
摘要由CSDN通过智能技术生成
Java 对象( Object 实例)结构包括三部分:对象头、对象体和对齐
字节,具体如图 所示

1.对象头

对象头包括三个字段,第一个字段叫作 Mark Word (标记字),用
于存储自身运行时的数据,例如 GC 标志位、哈希码、锁状态等信息。
第二个字段叫作 Class Pointer (类对象指针),用于存放方法区
Class 对象的地址,虚拟机通过这个指针来确定这个对象是哪个类的实
例。
第三个字段叫作 Array Length (数组长度)。如果对象是一个 Java
组,那么此字段必须有,用于记录数组长度的数据;如果对象不是一个
Java 数组,那么此字段不存在,所以这是一个可选字段。

2.对象体

对象体包含对象的实例变量(成员变量),用于成员属性值,包括
父类的成员属性值。这部分内存按 4 字节对齐。

3.对齐字节

对齐字节也叫作填充对齐,其作用是用来保证 Java 对象所占内存字
节数为 8 的倍数 HotSpot VM 的内存管理要求对象起始地址必须是 8 字节的
整数倍。对象头本身是 8 的倍数,当对象的实例变量数据不是 8 的倍数
时,便需要填充数据来保证 8 字节的对齐
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

semicolon_helloword

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值