JAVA对象头
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JAVA对象头相关的知识,希望对你有一定的参考价值。
#为了防止自己忘记,先记着,之前我一直以为《深入理解JAVA虚拟机》写错了来着。
在HotSpot虚拟机中,对象在内存中存储的布局可以分为3块区域:对象头(Header),实例数据(Instance Data)和对齐填充(Padding)。
也就是说 JAVA对象 = 对象头 + 实例数据 + 对象填充
对象头由两部分组成,一部分用于存储自身的运行时数据,称之为 Mark Word,另外一部分是类型指针,及对象指向它的类元数据的指针。
对象头 = Mark Word + 类型指针
(未开启指针压缩的情况下)
在32位系统中,Mark Word = 4 bytes = 32 bits,对象头 = 8 bytes = 64 bits;
在64位系统中,Mark Word = 8 bytes = 64 bits ,对象头 = 16 bytes = 128bits;
以上是关于JAVA对象头的主要内容,如果未能解决你的问题,请参考以下文章
JUC并发编程 -- Monitor 概念(Java 对象头 & synchronized原理之 Monitor(锁))