对象内存布局
2024-05-28 00:00:07  阅读数 514

存储布局

对象在内存中的存储布局
  • 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常用参数

  • jvm参数

64位系统指针默认是64bit
工具:JOL = Java Object Layout

Object o = new Object();
System.out.println(ClassLayout.parseIntance(o).toPrintable());