JVM之对象内存布局

一、整体说明

二、名词说明

1、对象头

在64位系统中,Mark Word占了8个字节,类型指针占了8个字节(未开启指针压缩),一共是16个字节。

下图为开启了指针压缩(JVM默认开启)的Object对象的内存占用情况(value值注意大小端问题,byte倒着读,bit正着读)

Object对象中,对象头包含两个部分:

对象标记(MarkWord):

类元信息/类型指针(Class Pointer):类的元信息,指向JVM里面的方法区

数组对象中多了长度(Length)

使用标记算法分别存储了以下内容

2、示例数据

就是存储的属性信息,例如一个int类型就是4个字节,一个boolean就是一个字节

3、对齐填充

虚拟机要求对象起始地址必须是8字节的整数倍,填充数据不是必须存在的,仅仅是为了字节对齐这部分内存,按8字节补充对齐。