存储布局
-
markword
对象头 8字节。标识着头对象的状态,被回收多少次 -
class pointer
-XX:+UseCompressedClassPointers 为4字节,不开启为8字节
T t = new T() t里面的class pointer指向t.class
.class文件被ClassLoader加载到内存空间的时候会为每个.class生成一个对象
通常来说一个.class文件只会被一个ClassLoader加载
-
instance data
成员变量
-XX:+UseCompressedOops 为4字节,不开启为8字节
Ordinary Object Pointer 引用类型 -
padding
8的倍数。数据是一块一块读取的,所以需要对齐。
JVM常用参数
64位系统指针默认是64bit
工具:JOL = Java Object Layout
Object o = new Object();
System.out.println(ClassLayout.parseIntance(o).toPrintable());