一个对象最小占用内存多少?

1. 我们首先引用一个jar包,JOL全称为Java Object Layout,是分析JVM中对象布局的工具。


            org.openjdk.jol
            jol-core
            0.9
 

2. 编写一个啥也没有的类

import org.openjdk.jol.info.ClassLayout;
​
public class Object {
    public static void main(String[] args) {
        Object a = new Object();
        // 将分析结果打印出来
        System.out.println(ClassLayout.parseInstance(a).toPrintable());
    }
}

打印结果如下:

3. 分析:

(1)我们看到一共16bytes。但是只用了12bytes。为啥是16bytes? 因为JVM管理对象是以8为基数的。补4个字节,对象对齐。

(2)前12个字节都是对象头。普通对象由4部分组成,markword,classPointer(类指针),成员变量,内存补齐( 保证java对象在虚拟机中占内存大小为8N bytes )。数组还有长度。

你可能感兴趣的:(java)