JAVA对象布局

  • object header 对象头
  1. MARKWORD 8BYTE (64位 8BYTE; 32位 4BYTE) 标记字(锁信息)
  2. KLASS POINTER 8BYTE (64位 8BYTE; 32位 4BYTE) 类指针
  3. ARRAY LENGTH 8BYTE (64位 8BYTE; 32位 4BYTE) 数组长度(可选)

注:启用+UseCompressedOops开启指针压缩,标记字不压缩,对象头长度为12BYTE,数组头长度为16BYTE。
另外以下指针压缩到4BYTE

  1. 每个Class的属性指针(即静态变量)
  2. 每个对象的属性指针(即对象变量)
  3. 普通对象数组的每个元素指针
  • instance data 实例数据
  • padding 将对象长度对齐到计算机位宽的整数倍,利于存取效率(64位=8个字节)
原文地址:https://www.cnblogs.com/luguojun/p/14294695.html