问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

JVM对象头(header)

发布网友 发布时间:2022-11-28 14:24

我来回答

1个回答

热心网友 时间:2023-10-23 10:05

HotSpot 虚拟机的对象头包括两部分信息:Mark Word(标记字段)和 Klass Pointer(类型指针)

      1. Mark Word 用于存储对象自身的运行时数据,如哈希码(HashCode)、GC分代年龄、锁状态标志、线程持有的锁、偏向线程 ID、偏向时间戳等等。JVM 对象头一般占用两个机器码,在 32-bit JVM 上占用 64bit, 在 64-bit JVM 上占用 128bit 即 16 bytes(暂不考虑开启压缩指针的场景)。

另外,如果对象是一个 Java 数组,那在对象头中还必须有一块用于记录数组长度的数据,因为虚拟机可以通过普通 Java 对象的元数据信息确定 Java 对象的大小,但是从数组的元数据中无法确定数组的大小。

对象需要存储的运行时数据很多,其实已经超出了32、64位 Bitmap 结构所能记录的限度,但是对象头信息是与对象自身定义的数据无关的额外存储成本,考虑到虚拟机的空间效率,Mark Word 被设计成一个非固定的数据结构以便在极小的空间内存储尽量多的信息,它会根据对象的状态复用自己的存储空间。

例如在 32 位的HotSpot 虚拟机中对象未被锁定的状态下,Mark Word 的 32个Bits 空间中的 25Bits 用于存储对象哈希码(HashCode),4Bits 用于存储对象分代年龄,2Bits 用于存储锁标志位,1Bit固定为0,在其他状态(轻量级锁定、重量级锁定、GC标记、可偏向)下对象的存储内容如下表所示。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
...啊?我从嘴里吐出去是直的算过肺了吗?我不会从鼻子里出去_百度... 恶心呕吐是什么? 高考数学大题应注意哪些问题呢? 高考数学可不可以用高等数学啊 高考数学 基础知识点 常见考查方式 高考数学考什么内容 一般纳税人如何交所得税 以前的QQ忘记密码了那时候不要了就不找回密码了,现在想找回来,但是又没... 常州机场坐飞机流程 常州机场大巴时刻表 ...我早上九点起飞的飞机, 然后我这的机场快线大巴到机场时70分钟,_百 ... 07给女朋友讲讲并发编程-Monitor概念 怎样设计一个热交换器,利用现有的电热水器和家里的暖气换热。 怎怎么切换换热器 朋友们 谁能给我解释一下电热水器和换热器之间的工作原理吗?带图片最好 九龙湖数智公园离九颂山河春江阅多远 龙湖中德开春江悦茗降价了吗 临桂万达春江悦开工了吗 南昌九颂山河春江悦造钢层是哪几楼? 宁波春江悦是连廊房吗 龙湖春江悦茗怎么样?好不好?值不值得买? 南昌九颂山河春江悦还有升值空间么 丰城九颂山河春江悦是属于哪个街道 宝骏e200外壳什么材质 宝骏电动汽车e100与e200的区别? 新能源汽车宝骏e200能上高速吗 宝骏e200手刹在哪 外墙装饰中的grc构件是什么 过失致人毁容怎么判 2:中学历史教学方法选择和运用的基本依据有哪些 江苏省公*,已经报名了,可是时间那么短怎么准备突出重围呢,有什么好培训班吗 jvm堆内存和非堆内存(小白入门文,各博客视频基础总结) 如何查看医保有没有交钱 lm是什么车牌子 王者荣耀庄周什么技能 惠普g14休眠之后就一直黑屏无反应 惠普CQ36休眠后黑屏 惠普笔记本中途合屏待机了一会,目前一直黑屏 银行汇票和银行承兑汇票有何区别?详细介绍各自的特点用处,谢谢!_百度知... 中通快递是什么性质的快递公司 上海则天贸易有限公司是中通快递吗 中银e贷有公积金可以过吗? 中银e贷和房贷有关系吗? 中银e贷没有公积金可以申请吗? 红岩读后感1000--1500 不适合健身的人群有哪些 什么人不适合健身 白鸭绒有味道就是质量不好吗? 农村集体经济组织能设立合伙企业吗 兴宁宁江西堤三期为何迟迟不动工 给物流产业园、汽车产业园、旅游产业园!分别起个好听点的名字叫什么好呢!希望大家帮忙!吸引人的! 卫裤会缩水吗 卫裤会起球吗