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>