对象头信息是与对象自身定义的数据无关的额外存储成本,在对象头中有一些运行时数据,其中就包括和多线程相关的锁的信息(_mark:Mark Word),Mark Word被设计成一个非固定的数据结构以便在极小的空间内存储尽量多的信息,它会根据对象的状态复用自己的存储空间。
Mark Word被划分为多个比特位区间,并在不同的对象状态下赋予比特位不同的含义。
![](https://img.haomeiwen.com/i10579521/e84e7f2d40d60e84.png)
对象头中主要包含了GC分代年龄,锁状态标记,哈希码,epoch。
对象的状态包含:无锁状态,轻量级锁,重量级锁,GC标记,偏向锁。
对象头信息是与对象自身定义的数据无关的额外存储成本,在对象头中有一些运行时数据,其中就包括和多线程相关的锁的信息(_mark:Mark Word),Mark Word被设计成一个非固定的数据结构以便在极小的空间内存储尽量多的信息,它会根据对象的状态复用自己的存储空间。
Mark Word被划分为多个比特位区间,并在不同的对象状态下赋予比特位不同的含义。
对象头中主要包含了GC分代年龄,锁状态标记,哈希码,epoch。
对象的状态包含:无锁状态,轻量级锁,重量级锁,GC标记,偏向锁。
本文标题:Java并发那些事儿-对象头
本文链接:https://www.haomeiwen.com/subject/awgfqctx.html
网友评论