深入Java虚拟机:JVM G1GC的算法与实现 作者:[日] 中村成洋 著,吴炎昌,杨文轩 译出版时间:2021内容简介 本书深入Java虚拟机底层原理,对JVM内存管理中的垃圾回收算法G1GC进行了详细解读。全书分为“算法篇”和“实现篇”两大部分:前一部分主要介绍G1GC的算法原理,内容包括G1GC的并发标记、转移功能、软实时性的实现和分代G1GC模式;后一部分聚焦算法篇中没有详细讲解的实现部分,基于HotSpotVM源码,讲解对象管理功能、内存分配器的机制、线程管理方法和G1GC的具体实现。本书以图配文,通俗易懂,既系统介绍了G1GC的基础算法,又贴近现实,剖析了实用JVM中的G1GC实现,同时还包含了作者对G1GC的研究成果和独到见解,是深入理解JVM和G1GC机制的佳作。目录算法篇第 1章 G1GC是什么1.1 G1GC和实时性 21.2 堆结构 51.3 执行过程 51.4 并发标记和转移 7第 2章 并发标记2.1 什么是并发标记 82.2 标记位图 92.3 执行步骤 102.4 步骤①——初始标记阶段 102.5 步骤②——并发标记阶段 122.6 步骤③——最终标记阶段 182.7 步骤④——存活对象计数 192.8 步骤⑤——收尾工作 212.9 总结 22第3章 转移3.1 什么是转移 253.2 转移专用记忆集合 263.3 转移专用写屏障 283.4 转移专用记忆集合维护线程 313.5 热卡片 323.6 执行步骤 323.7 步骤①——选择回收集合 333.8 步骤②——根转移 343.9 步骤③——转移 393.10 标记信息的作用 393.11 总结 40第4章 软实时性4.1 用户的需求 414.2 预测转移时间 424.3 预测可信度 434.4 GC暂停处理的调度 444.5 并发标记中的暂停处理 46第5章 分代G1GC模式5.1 不同点 475.2 新生代区域 485.3 分代对象转移 495.4 执行过程简述 495.5 分代选择回收集合 515.6 设置最大新生代区域数 515.7 GC的切换 525.8 GC执行的时机 52第6章 算法篇总结6.1 关系图 536.2 优点 546.3 缺点 546.4 结束语 55实现篇第7章 准备工作7.1 什么是HotSpotVM 587.2 什么是OpenJDK 587.3 获取源码 597.4 代码结构 607.5 两个特殊类 617.6 适用于各种操作系统的接口 63第8章 对象管理功能8.1 对象管理功能的接口 648.2 对象管理功能的全貌 658.3 CollectedHeap类 668.4 CollectorPolicy类 678.5 各个GC类 68第9章 堆结构9.1 VM堆 709.2 G1GC堆 729.3 常驻空间 75第 10章 分配器10.1 内存分配的流程 7610.2 VM堆的申请 7710.3 VM堆的分配 7910.4 对象的分配 8610.5 TLAB 90第 11章 对象结构11.1 oopDesc类 9211.2 klassOopDesc类 9311.3 Klass类 9411.4 类之间的关系 9511.5 不要在oopDesc类中定义虚函数 9611.6 对象头 97第 12章 HotSpotVM的线程管理12.1 线程操作的抽象化 10312.2 Thread类 10312.3 线程的生命周期 10412.4 Windows线程的创建 10712.5 Windows线程的处理开始 11012.6 Linux线程的创建 11312.7 开始Linux线程的处理 117第 13章 线程的互斥处理13.1 什么是互斥处理 11913.2 互斥量 11913.3 监视器 12013.4 监视器的实现 12213.5 Monitor类 12713.6 Mutex类 12913.7 MutexLocker类 130第 14章 GC线程(并行篇)14.1 并行执行的流程 13214.2 AbstractWorkGang类 13614.3 AbstractGangTask类 13714.4 GangWorker类 13714.5 并行GC的执行示例 138第 15章 GC线程(并发篇)15.1 ConcurrentGCThread类 14615.2 SuspendibleThreadSet类 14715.3 安全点 15015.4 VM线程 152第 16章 并发标记16.1 并发标记的全貌 15516.2 步骤①——初始标记阶段 16016.3 步骤②——并发标记阶段 16816.4 步骤③——最终标记阶段 17016.5 步骤④——存活对象计数 17216.6 步骤⑤——收尾工作 172第 17章 转移17.1 转移的全貌 17417.2 步骤①——选择回收集合 17817.3 步骤②——根转移 18117.4 步骤③——转移 185第 18章 预测与调度18.1 根据历史记录进行预测 18718.2 并发标记的调度 19418.3 转移的调度 195第 19章 准确式GC的实现19.1 栈图 19719.2 句柄区域与句柄标记 209第 20章 写屏障的性能开销20.1 运行时切换GC算法 21220.2 解释器的写屏障 21420.3 JIT编译器的写屏障 216后记 220参考文献 223 上一篇: 深入体验Java Web开发内幕 高级特性 下一篇: 大数据架构和算法实现之路:电商系统的技术实战