java对象的组成

对象头

  1. mark word: 记录着对象的状态信息.主要有:是否锁定,持有的锁,线程ID,GC年龄,hashCode.

  2. 类型指针:即对象指向的元数据的指针.如果对象是数组,则还会记录数组的长度.

mark word

存储着线程锁状态,GC情况,hashcode.不受指针压缩影响.

64位的对象头mark word.

lock是锁的标记位,biased_lock是偏向锁标记.lock+biased_lock组合可以表示锁的状态.

2.类对象指针,存放方法区中class对象的地址.

指针压缩

在64位操作系统下,默认会进行指针压缩.减少空间消耗.压缩类型主要有:

1.class对象的指针.(静态变量)

2.Object对象的指针.(成员变量)

3.普通对象数组的指针.

实例数据

程序代码中定义的各种字段内容.

对齐填充

占位符作用.所有的对象大小规定必须是8字节的整数倍.如果不足,则需要补齐.

Last updated

Was this helpful?