讲师中心 微信公众号
AI工具推荐 视频效率加速

在Java中对象头的mark word有什么用_Java锁标记位与GC标记关系说明

风杰酱_5334

风杰酱_5334

发布时间:2025-12-29 12:11:03

|

628人浏览过

|

来源于php中文网

原创

Mark Word 是 Java 对象头中动态复用的 64 位核心字段,依对象状态存储哈希码、锁信息(偏向/轻量/重量级)或 GC 标记,通过锁状态位隔离不同用途,支撑 synchronized、hashCode 和垃圾回收协同运行。

在java中对象头的mark word有什么用_java锁标记位与gc标记关系说明

Mark Word 是 Java 对象头(Object Header)中最核心的字段之一,它不是固定存储某一种信息,而是根据对象当前状态动态复用同一块内存空间,主要服务于锁机制和垃圾回收两大关键场景。

Mark Word 存什么:一格多用的动态结构

在 64 位 JVM 中,Mark Word 占 64 位(8 字节),但不会同时存满所有内容。它的布局随对象状态切换,典型用途包括:

  • 无锁状态:存放对象的哈希码(hashCode),仅在首次调用 hashCode() 后写入;若未调用,则这部分可被后续锁状态复用
  • 偏向锁状态:记录偏向线程 ID、偏向时间戳、是否启用偏向锁等,用于避免无竞争时的同步开销
  • 轻量级锁状态:存指向当前线程栈中锁记录(Lock Record)的指针,配合 CAS 实现快速加锁/解锁
  • 重量级锁状态:存指向 Monitor 对象的指针,此时锁已膨胀,进入操作系统级阻塞队列
  • GC 相关标记:如分代年龄(GC age)、是否处于 GC 标记阶段(如 CMS 的 mark-bit、G1 的 TAMS 指针辅助位)等,不同 GC 算法会按需复用低位

锁标记位与 GC 标记不冲突,靠状态位隔离

Mark Word 通过高几位(通常是 2–3 位)定义锁状态标志(lock bits),例如:

  • 001 → 无锁(normal)
  • 101 → 偏向锁(biased)
  • 000 → 轻量级锁(lightweight)
  • 010 → 重量级锁(heavyweight)

而 GC 使用的标记信息(如分代年龄占 4 位、GC 标志位占 1 位)被安排在其余空闲位上。JVM 严格约定:同一时刻只有一种主导状态生效,GC 运行期间会暂停应用线程(STW)或采用读屏障保障一致性,因此不会出现锁位与 GC 位互相覆盖或误读。

seo-keyword-analyzer
seo-keyword-analyzer

分析关键词进行SEO优化;研究搜索量、竞争程度和排名难度;生成关键词建议、内容创意及优化建议。

下载

立即学习“Java免费学习笔记(深入)”;

实际影响:你看不见,但它决定性能底线

Mark Word 的状态变化直接影响程序行为:

  • 频繁调用 hashCode() 后再加锁,可能触发锁膨胀(因哈希码已占用原偏向/轻量位)
  • 开启 -XX:-UseBiasedLocking 后,偏向锁位不再使用,节省了部分判断开销
  • G1 垃圾收集器在并发标记阶段会临时修改 Mark Word 的某些位(如设置 marked-in-bit),但仅在线程安全上下文中操作
  • 使用 JOL(Java Object Layout)工具可打印对象头,观察 Mark Word 实际值变化,验证锁升级过程

基本上就这些。它不暴露给开发者直接操作,却是 synchronized、hashCode、GC 三者协同运转的隐性枢纽。

相关文章

WPS零基础入门到精通全套教程!
WPS零基础入门到精通全套教程!

全网最新最细最实用WPS零基础入门到精通全套教程!带你真正掌握WPS办公! 内含Excel基础操作、函数设计、数据透视表等

下载

相关标签:

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

Loomy
Loomy Hot

一款AI工具,主要用于科大讯飞发布的桌面级 AI 助理,比 OpenClaw 更易用、更安全!,适合需要提升相关任务效率的用户。

小橡皮AI

一款AI工具,主要用于小橡皮一键去AI味,将机器味重的内容改得更有活人感,防止因为 AI 内容被平台打上 AI 标签,以及限流,适合需要提升相关任务效率的用户。

讯飞智作

讯飞智作是一款AI视频创作工具,AI文本配音工具,数字人课程、营销视频制作。

墨刀AI
墨刀AI Hot

一款AI图像与设计工具,主要用于产品经理的专属智能体,适合需要提升相关任务效率的用户。

讯飞绘文

讯飞绘文是一款由科大讯飞推出的一站式 AIGC 内容运营平台。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

超级简历WonderCV

一款AI办公效率工具,主要用于免费求职简历模版下载制作,应届生职场人必备简历制作神器,适合需要提升相关任务效率的用户。

相关专题

更多
C++ 智能指针与现代内存管理
C++ 智能指针与现代内存管理

深入讲解 C++ 现代内存管理的核心工具——智能指针,涵盖 unique_ptr 独占所有权语义、shared_ptr 引用计数机制与循环引用问题、weak_ptr 弱引用的应用场景、make_unique/make_shared 工厂函数的性能优势、自定义删除器的编写、RAII 资源管理思想的实践,以及从裸指针迁移到智能指针的重构策略,帮助开发者编写安全无泄漏的现代 C++ 代码。

379

2026.04.23

堆和栈的区别
堆和栈的区别

堆和栈的区别:1、内存分配方式不同;2、大小不同;3、数据访问方式不同;4、数据的生命周期。本专题为大家提供堆和栈的区别的相关的文章、下载、课程内容,供大家免费下载体验。

6247

2023.07.18

堆和栈区别
堆和栈区别

堆(Heap)和栈(Stack)是计算机中两种常见的内存分配机制。它们在内存管理的方式、分配方式以及使用场景上有很大的区别。本文将详细介绍堆和栈的特点、区别以及各自的使用场景。php中文网给大家带来了相关的教程以及文章欢迎大家前来学习阅读。

2628

2023.08.10

线程和进程的区别
线程和进程的区别

线程和进程的区别:线程是进程的一部分,用于实现并发和并行操作,而线程共享进程的资源,通信更方便快捷,切换开销较小。本专题为大家提供线程和进程区别相关的各种文章、以及下载和课程。

4438

2023.08.10

页面置换算法
页面置换算法

页面置换算法是操作系统中用来决定在内存中哪些页面应该被换出以便为新的页面提供空间的算法。本专题为大家提供页面置换算法的相关文章,大家可以免费体验。

6356

2023.08.14

word背景色怎么改成白色
word背景色怎么改成白色

Word是微软公司的一个文字处理器软件。word为用户提供了专业而优雅的文档工具,帮助用户节省时间并得到优雅美观的结果。word提供了许多易于使用的文档创建工具,同时也提供了丰富的功能供创建复杂的文档使用。怎么word背景色怎么该呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

4531

2023.07.21

word最后一页空白页怎么删除
word最后一页空白页怎么删除

word最后一页空白页删除方法有:通过删除回车符、调整页边距、删除分节符或调整分页符位置,您可以轻松去除最后一页的空白页。根据您实际的文档情况,选择适合您的方法进行操作,使您的文档更加美观和整洁。本专题为大家提供word最后一页空白页怎么删除不了相关的各种文章、以及下载和课程。

1080

2023.07.24

word最后一页空白页怎么删除不了
word最后一页空白页怎么删除不了

word删除最后一页空白页,可以尝试使用Backspace键删除空白页,如果无效,查找和删除分页符,或者调整页面边距和行距。还可以尝试将文档保存为其他格式并重新打开和保存。本专题为大家提供word最后一页空白页为啥删除不了的相关的文章、下载、课程内容,供大家免费下载体验。

3122

2023.07.25

Vite 项目如何打包和部署
Vite 项目如何打包和部署

Vite项目打包部署专题汇集生产构建、产物预览、输出目录、资源路径、Nginx与GitHub Pages部署及常见白屏和路由404问题的已审核文章,帮助读者完成上线流程。

40

2026.10.28

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
dev.java 官方:Learn Java
dev.java 官方:Learn Java

共0课时 | 0人学习

Java JDBC数据库连接官方教程
Java JDBC数据库连接官方教程

共0课时 | 0人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn