对象构成成分包括什么

对象构成成分包括什么

对象的构成组成部分包括对象头、对象的实例数据区和对齐填充字节这三部分组成。

1、 对象头

对象头由三部分组成:

Mark Word:记录对象和锁的有关信息。当一个对象被 synchronized 关键字加锁之后,围绕锁的操作就都会和MarkWord有关联。MarkWord通常都是 32 bit位大小。会保存一些分代年龄、无锁状态下对象的HashCode、偏向锁的线程ID、轻量级锁指向栈中锁记录的指针、指向重量级锁的指针、锁的标志位等内容。 指向类的指针:大小也通常为32bit,它主要指向类的数据,也就是指向方法区中的位置。

数组长度:只有数组对象才有,在32位或者64位JVM中,长度都是32bit。

2、 实例数据区

该区域主要就存放着实例对象的一些字段属性内容。

3、 对齐填充字节

由于JVM要求Java对象所占的内存大小应该是8bit的倍数,所以这部分主要就是将对象大小补充为8bit的倍数,没有别的功能。