java对象的组成

对象头
mark word: 记录着对象的状态信息.主要有:是否锁定,持有的锁,线程ID,GC年龄,hashCode.
类型指针:即对象指向的元数据的指针.如果对象是数组,则还会记录数组的长度.
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?