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

ZGC并发重映射(Remap)阶段的逻辑处理细节

梦瑶大大_6498

梦瑶大大_6498

发布时间:2026-07-25 09:22:07

|

121人浏览过

|

来源于php中文网

原创

ZGC并发重映射不修改指针值,而是通过读屏障检测Remapped位+三视图页表切换实现按需自愈:未置位则查转发表并写回新地址,已置位则零开销硬件寻址,全程无STW。

zgc并发重映射(remap)阶段的逻辑处理细节

ZGC 的并发重映射(Remap)阶段不修改指针本身,而是靠读屏障 + 多重映射协同完成引用跳转,整个过程对应用代码完全无感。

指针自带状态,访问即触发修复

每个 Java 引用(变量)在 ZGC 中实际是一个 64 位染色指针,高几位编码运行时状态。其中第 46 位是 Remapped 位,直接表明该指针是否已指向重定位后的新地址:

  • 若 Remapped 位未置位,说明对象尚未重定位,或重定位刚完成但该引用还没更新——此时读屏障会查转发表(Forwarding Table),拿到新地址,把指针“就地”写回(自愈),并置位 Remapped 位
  • 若 Remapped 位已置位,说明该引用已是新地址,后续访问直接走硬件寻址,零额外开销
  • 这个修复动作只发生在变量首次被读取时,不是批量扫描,也不是 STW 统一改,是“按需懒更新”

三视图内存映射保障新旧共存

ZGC 利用操作系统 mmap 能力,为同一物理页建立三个虚拟地址视图:Marked0、Marked1 和 Remapped。变量始终持有某个视图下的虚拟地址(比如原 Marked0 地址),而底层页表可动态切换其映射目标:

  • 重分配前:Marked0 视图映射到物理页 A,所有引用都指向这里
  • 重分配中:对象复制到物理页 B,Remapped 视图也映射到页 B;Marked0 视图仍映射页 A,确保旧引用不会崩溃
  • 切换靠页表项更新(TLB 刷新),不是改指针值——变量继续用原地址访问,硬件自动路由到新物理页

Remap 阶段的日志与隐性开销

日志里出现 Concurrent Remap (n of m) 并不表示在批量改指针,而是 ZGC 正在并发扫描线程栈,识别哪些栈帧里还藏着未更新的旧引用:

  • 每次扫描一个线程栈的小批次,耗时异常(如卡住几毫秒)通常源于栈过深、Lambda 表达式嵌套多、或匿名内部类频繁生成局部引用
  • 若连续多次 Remap 耗时 > 3ms,且 ZStatistics 显示 “Threads scanned” 数远超实际线程数,说明某些栈被反复扫描——常见于闭包捕获大量对象又未及时释放的场景
  • 它不阻塞业务线程,但 CPU 时间片消耗真实存在,是当前 ZGC 唯一需遍历栈的并发阶段

热门AI工具

更多
Loomy
Loomy Hot

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

超级简历WonderCV

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

切问学术

切问学术是一款AI论文写作工具,复旦大学NLP团队推出的AI学术智能体。

WorkBuddy

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

PixPix
PixPix Hot

PixPix是一款面向电商视觉生产的AI商品图生成工具。

AionClaw
AionClaw Hot

AionClaw是一款面向办公、创作和编程任务的AI桌面智能体。

DeepSeek

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

豆包大模型

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

VibeKnow
VibeKnow Hot

一款AI视频创作工具,主要用于全球首个AI知识视频创作平台,文档、文章、网页,一键生成视频,适合需要提升相关任务效率的用户。

相关专题

更多
golang map内存释放
golang map内存释放

本专题整合了golang map内存相关教程,阅读专题下面的文章了解更多相关内容。

550

2025.09.05

golang map相关教程
golang map相关教程

本专题整合了golang map相关教程,阅读专题下面的文章了解更多详细内容。

323

2025.11.16

golang map原理
golang map原理

本专题整合了golang map相关内容,阅读专题下面的文章了解更多详细内容。

513

2025.11.17

java判断map相关教程
java判断map相关教程

本专题整合了java判断map相关教程,阅读专题下面的文章了解更多详细内容。

283

2025.11.27

OpenJDK JVM参数怎么调优
OpenJDK JVM参数怎么调优

Java应用运行缓慢,如何调整JVM参数?本专题介绍OpenJDK JVM性能调优的基本流程,涵盖性能指标确认、运行数据采集、内存配置和垃圾回收分析,帮助你先定位瓶颈,再通过对照测试验证效果,避免直接套用参数而影响应用稳定性。

0

2026.10.16

OpenJDK怎么配置Java开发环境
OpenJDK怎么配置Java开发环境

怎样用OpenJDK搭建开发环境?本专题介绍版本选择、下载安装、环境变量配置和编译运行验证,帮助你理清JDK的作用及基本配置流程,并通过简单程序检查环境是否可用,为后续项目开发做好准备。

0

2026.10.16

OpenJDK怎么部署Java应用
OpenJDK怎么部署Java应用

Java项目开发完成后,怎样部署到目标环境并正常运行?本专题介绍OpenJDK应用部署流程,涵盖运行环境准备、版本兼容检查、应用打包、启动参数配置和日志查看,帮助你理清部署前后的操作顺序,减少环境差异造成的运行问题。

0

2026.10.16

Revel框架模板渲染与表单验证
Revel框架模板渲染与表单验证

本专题围绕Revel框架视图层开发,介绍模板语法、变量输出、布局复用、表单提交、参数绑定与验证规则,帮助开发者完成安全规范的页面交互。

0

2026.10.16

Revel框架MVC路由与控制器
Revel框架MVC路由与控制器

本专题聚焦Revel框架MVC核心机制,讲解路由定义、控制器Action、参数绑定、请求响应和反向路由,并结合常见场景梳理接口请求处理流程。

0

2026.10.16

热门下载

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

精品课程

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

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