对象头问题
对象头是每个对象的头部!!
对象=对象头(12字节)+每个成员变量的属性(未定,int4字节,char2字节等)+补齐字段!
补齐字段将对象的大小补成8的倍数的字节!
64位的cpu的对象头的示意图,总共对象头占128位,其中markword(64位)+classPonter(64位,但是有可能采用了压缩算法存储class的地址,变成了32位)
蓝色为对象的hashcode,与绿色部分相对应,绿色部分是十六进制的,其中左下绿色是7位的(首位为未用值),cpu采用低位存储的方法,依次为014ae5a5和hashcode刚好相对应。
红色第一位为未使用,
中间四位是gc线程的计数,所以当youngGC达到15后就会 执行FullGC,因为只有4位!!
红色后三位对应的是对象的状态(是否被synchronize关键字锁定)
图一和图二颜色相对应!!!