1 定义

Java object layout( java对象内存布局)

2 示例

2.1 引入jar包

 compile group: 'org.openjdk.jol', name: 'jol-core', version: '0.9'

2.2 打印内存布局

public static void main(String[] args) {
    Object o = new Object();
    System.out.println(ClassLayout.parseInstance(o).toPrintable());
}

2.3 运行结果

image.png

可以看到new object() 一共被分配16个字节

对象包含:对象头,对象体,对齐字节。

  1. 对象头:markword与锁有关,占8位

  2. 对象体:class point,Java默认开启类型指针压缩,原本为8,压缩后4个字节

  3. 对齐字节:自动补全为8的整数位