Java的对象头和对象组成详解
Java对象保存在内存中时,由以下三部分组成:
1,对象头
2,实例数据
3,对齐填充字节
一,对象头
对象头由以下三部分组成:
1,Mark Word
2,指向类的指针
3,数组长度(只有数组对象才有)
1,Mark Word
![image-20210430095531572](
2,指向类的指针
该指针在32位JVM中的长度是32bit,在64位JVM中长度是64bit。
Java对象的类数据保存在方法区。
3,数组长度
只有数组对象保存了这部分数据。
该数据在32位和64位JVM中长度都是32bit。
二,实例数据
对象的实例数据就是在java代码中能看到的属性和他们的值。
三,对齐填充字节
因为JVM要求java的对象占的内存大小应该是8bit的倍数,所以后面有几个字节用于把对象的大小补齐至8bit的倍数,没有特别的功能。
导入maven 可以查看对象信息
<dependency>
<groupId>org.openjdk.jol</groupId>
<artifactId>jol-core</artifactId>
<version>0.10</version>
</dependency>