新闻中心
对象头在j*a中的结构有哪几种
J*a对象头结构动态变化,普通对象含Mark Word(8字节)和类型指针(4/8字节),数组对象额外增加4字节长度字段;Mark Word布局随锁状态(无锁、偏向、轻量级、重量级)及GC阶段而变,受指针压缩、JVM位数等因素影响。

J*a对象头的结构主要取决于虚拟机实现(如HotSpot)和运行时状态,不是固定一种,而是动态变化的。核心分两类:普通对象头和数组对象头,每类又因锁状态、GC标记等不同而有差异。
普通对象的对象头结构
在HotSpot VM中,一个普通J*a对象(非数组)的对象头通常由两部分组成:
- Mark Word(标记字段):占用8字节(64位JVM,默认开启指针压缩时仍为8字节),存储哈希码、GC分代年龄、锁状态标志、线程持有的锁指针等。内容随对象状态动态变化,例如无锁时存identity hash code,轻量级锁时存指向栈中锁记录的指针,重量级锁时存指向monitor对象的指针。
- Class Metadata Address(类型指针):占用4字节(开启指针压缩)或8字节(未开启),指向该对象所属类的Klass结构(即元数据信息)。用于确定对象类型、方法分派等。
数组对象的对象头结构
数组对象比普通对象多一个字段,整体结构为:
- Mark Word(同上,8字节)
- Class Metadata Address(同上,4或8字节)
- Array Length(数组长度):固定4字节,存储int类型的数组元素个数。这是唯一能直接从对象头读取长度的J*a数组特征。
不同锁状态下的Mark Word布局(关键变化点)
Mark Word是对象头中最灵活的部分,其内部结构按锁状态切换,常见布局包括:
星辰Agent
科大讯飞推出的智能体Agent开发平台,助力开发者快速搭建生产级智能体
378
查看详情
- 无锁状态:低3位为001,高位存hash code(延迟计算)或0;若未计算hash,则可能为0,首次调用hashCode()后写入。
- 偏向锁状态:低3位为101,接着存偏向线程ID、偏向时间戳、epoch等。
- 轻量级锁状态:低3位为000,整个字段存指向当前线程栈中Lock Record的指针。
- 重量级锁状态:低3位为010,整个字段存指向堆中ObjectMonitor对象的指针。
- GC标记状态(如CMS、G1并发标记阶段):低2位可能被复用为mark bit(如11),具体取决于GC算法和JVM版本。
影响对象头大小的几个因素
实际占用空间并非绝对固定,受以下设置直接影响:
- 是否开启指针压缩(-XX:+UseCompressedOops):开启时,类型指针占4字节;关闭则占8字节,对象头总长相应变化。
- 是否开启压缩类指针(-XX:+UseCompressedClassPointers):通常与压缩Oops联动,影响类型指针存储方式。
- JVM架构(32位 vs 64位):32位JVM下对象头整体更小(Mark Word为4字节),但主流已基本淘汰。
- 是否为数组:数组恒多4字节length字段,与是否压缩无关。
基本上就这些。对象头没有“标准不变结构”,它是一组按需复用的二进制字段,理解它的关
键是抓住Mark Word的动态语义和类型指针/长度字段的静态存在。调试时可用JOL(J*a Object Layout)工具打印验证具体布局。
以上就是对象头在j*a中的结构有哪几种的详细内容,更多请关注其它相关文章!
# 几个
# 威海文登网站优化排名
# seo外链对比
# 江北专业seo电话
# 储藏室营销推广广告
# 江门智能网站建设公司
# 阳江网站海外推广建设
# 南通网站推广厂家排名榜
# 辽宁关键词优化排名加盟
# 河源网站seo代理商
# seo优化诊断包括哪些排名
# 中文网
# 相关文章
# 它是
# 首次
# java
# 这是
# 复用
# 时长
# 好了
# 几种
# 无锁
# java数组
# 栈
# 工具
# 虚拟机
# 字节
# cms
# word
# 对象头
相关栏目:
【
科技资讯46185 】
【
网络学院92790 】
相关推荐:
word中如何让数字纵向排列_Word数字纵向排列方法
QQ邮箱正确登录入口_QQ邮箱官方网站使用地址
ArrayList与LinkedList核心操作的Big-O复杂度分析
解决Flask中Quill编辑器内容提交失败及TypeError的指南
2306选座时如何选靠窗位置_12306选座靠窗座位查看方法解析
解决Bootstrap卡片顶部边距导致背景图下移的问题
C++编译期如何执行复杂计算_C++模板元编程(TMP)技巧与应用
qq浏览器打开空白页怎么办 qq浏览器启动后显示白屏的解决教程
自定义Bag-of-Words实现:处理带负号的词汇权重
如何解决电商平台定制报价请求的“黑洞”问题,SprykerQuoteRequest模块助你提升客户体验与销售效率
夸克浏览器桌面版同步不了书签怎么处理 夸克浏览器跨设备同步异常解决方案
MAC的“快捷指令”怎么同步到iPhone_MAC利用iCloud同步所有设备的自动化指令
如何使 Jest 模拟函数默认抛出错误以提高测试效率
win11 arm版怎么安装 M1/M2 Mac虚拟机安装ARM win11的方法
铁路12306官网网页端快速入口 铁路12306官方首页登录教程
win11专注助手在哪 Win11免打扰模式设置与自动化规则【指南】
抖音网页版企业服务中心登录入口_抖音网页版企业登录平台
c++ dfs和bfs代码 c++深度广度优先搜索算法
斑马英语APP如何开启夜间护眼阅读_斑马英语APP夜间模式与低蓝光设置教程
MinIO大规模对象列表性能瓶颈深度解析与外部元数据管理策略
HTML元素状态管理:根据DIV内容动态启用/禁用按钮
天眼查企业查询官网入口 天眼查官方网页版查询
谷歌浏览器如何快速清除某个网站的数据_Chrome网站缓存清理方法
漫蛙manwa官网登录界面_漫蛙漫画网页版主站入口
如何将一个大型PHP应用拆分为多个Composer包_微服务与模块化架构的Composer实践
J*aScript打印功能_j*ascript输出控制
CSS条件样式无法按设备触发怎么排查_media条件语句正确设置解决触发问题
Go RPC HTTP服务正确实现与常见陷阱解析
Win10如何清理注册表垃圾 Win10手动清理无效注册表【技巧】
智慧团建扫码登录入口 智慧团建扫码登录入口官网版
格力空气能E5故障代码是什么情况_格力空气能E5代码解析与应对措施
Yandex免登录官网入口_俄罗斯Yandex搜索引擎直达链接
windows10怎么查看本机ip_windows10命令提示符ipconfig使用
Golang如何实现Web接口签名验证_Golang Web接口签名校验开发方法
MAC如何将整个网页截长图_MAC使用Safari的导出为PDF或第三方工具
QQ邮箱在线登录平台 QQ邮箱个人邮箱网页版入口
1688商家版怎样分析买家画像精准供货_1688商家版分析买家画像精准供货【供货策略】
C++如何实现单例模式_C++设计模式之线程安全的单例写法
微博网页版首页入口 微博电脑端官网登录链接
CSS实现侧边栏导航项全宽圆角悬停背景效果
CSS子选择器:如何区分并样式化嵌套列表的子层级
抖音怎么赚钱_抖音创作者变现方法与途径指南
Web Components中自定义开关组件状态同步的常见陷阱与解决方案
NRF24L01数据传输深度解析:解决大载荷接收异常与分包策略
Golang如何实现简单的Web表单_Golang表单提交与验证处理方法
J*aScript对象创建方式_J*aScript设计模式应用
如何将HTML表格多行数据保存到Google Sheet
深入理解J*a链表中的IPosition接口与使用
Win11怎么查看电脑配置_Win11硬件配置检测工具使用
在J*a中如何使用Exception包装底层异常_异常包装与信息传递方法说明


2025-12-05
浏览次数:次
返回列表