在前面的课程中,我们学习了对象头,其中对象头包含Mark Word和class pointer,当然数组还会有一个数组长度。本文主要分析Mark Work中包含的信息。
以下两张图是一个意思:
32位
32位
64位
以上就是Mark Word会存储的信息,这个意思是说Java对象在不同状态下其对象头都会有不同的表现形式,主要表现为3种状态:无锁状态、加锁状态(偏向锁、轻量级锁、重量级锁)、gc标记状态。(关于加锁状态的演化和含义,之后的课程会进行详细的介绍,大概在线程的时候讲解)
比如在无锁的情况下,它的锁标志位为01,然后是否是偏向锁为0,然后4bit存储分代年龄(0到15,所以最大为15),然后25bit存储对象的hashCode(identity_hashcode,当对象使用HashCo