内容简介
本书深入Java虚拟机底层原理,对JVM内存管理中的垃圾回收算法G1G行了详细解读。全书分为“算法篇”和“实现篇”两大部分:前一部分主要介绍G1GC的算法原理,内括G1GC的并发标记、转能、软实时的实现和分代G1GC模式;后一部分聚焦算法篇中没有详细讲解的实现部分,基于HotSpotVM源码,讲解对象管能、内存分配器的机制、线程管理方法和G1GC的具体实现。 本书以图配文,通俗易懂,既系统介绍了G1GC的基础算法,又现实,剖析了实用JVM中的G1GC实现,同时含了作者对G1GC的研究成果和独到见解,是深入理解JVM和G1GC机制的佳作。 本书适合对所有JVM和垃圾回收算法感兴趣的读者阅读。
目录
算法篇 第1章 G1GC是什么 1.1 G1GC和实时 1.2 堆结构 1.3 执行过程 1.4 并发标记和转移 第2章 并发标记 2.1 什么是并发标记 2.2 标记位图 2.3 执行步骤 2.4 步骤①——初始标记阶段 2.5 步骤②——并发标记阶段 2.6 步骤③——终标记阶段 2.7 步骤④——存活对象计数 2.8 步骤⑤——收尾工作 2.9 结 第3章 转移 3.1 什么是转移 3.2 转移专用记忆集合 3.3 转移专用写屏障 3.4 转移专用记忆集合维护线程 3.5 热卡片 3.6 执行步骤 3.7 步骤①——选择回收集合 3.8 步骤②——根转移 3.9 步骤③——转移 3.10 标记信息的作用 3.11 结 第4章 软实时 4.1 用户的需求 4.2 预测转移时间 4.3 预测可信度 4.4 GC暂停处理的调度 4.5 并发标记中的暂停处理 第5章 分代G1GC模式 5.1 不同点 5.2 新生代区域 5.3 分代对象转移 5.4 执行过程简述 5.5 分代选择回收集合 5.6 设置大新生代区域数 5.7 GC的切换 5.8 GC执行的时机 第6章 算法结 6.1 关系图 6.2 优点 6.3 缺点 6.4 结束语实现篇 第7章 准备工作 7.1 什么是HotSpotVM 7.2 什么是OpenK 7.3 获取源码 7.4 代码结构 7.5 两个特殊类 7.6 适用于各种操作系统的接口 第8章 对象管能 8.1 对象管能的接口 8.2 对象管能的全貌 8.3 CollectedHeap类 8.4 CollectorPolicy类 8.5 各个GC类 第9章 堆结构 9.1 VM堆 9.2 G1GC堆 9.3 常驻空间 第10章 分配器 10.1 内存分配的流程 10.2 VM堆的申请 10.3 VM堆的分配 10.4 对象的分配 10.5 TLAB 第11章 对象结构 11.1 oopDesc类 11.2 klassOopDesc类 11.3 Klasr/> 11.4 类之间的关系 11.5 不要在oopDesc类中定义虚函数 11.6 对象头 第12章 HotSpotVM的线程管理 12.1 线程操作的抽象化 12.2 Thread类 12.3 线程的生命周期 12.4 Windows线程的创建 12.5 Windows线程的处理开始 12.6 Linux线程的创建 12.7 开始Linux线程的处理 第13章 线程的互斥处理 13.1 什么是互斥处理 13.2 互斥量 13.3 监视器 13.4 监视器的实现 13.5 Monitor类 13.6 Mutex类 13.7 MutexLocker类 第14章 GC线程(并行篇) 14.1 并行执行的流程 14.2 AbstractWorkGang类 14.3 AbstractGangTask类 14.4 GangWorker类 14.5 并行GC的执行示例 第15章 GC线程(并发篇) 15.1 ConcurrentGCThread类 15.2 SuspendibleThreadSet类 15.3 点 15.4 VM线程 第16章 并发标记 16.1 并发标记的全貌 16.2 步骤①——初始标记阶段 16.3 步骤②——并发标记阶段 16.4 步骤③——终标记阶段 16.5 步骤④——存活对象计数 16.6 步骤⑤——收尾工作 第17章 转移 17.1 转移的全貌 17.2 步骤①——选择回收集合 17.3 步骤②——根转移 17.4 步骤③——转移 第18章 预测与调度 18.1 根据历史记行预测 18.2 并发标记的调度 18.3 转移的调度 第19章 式GC的实现 19.1 栈图 19.2 句柄区域与句柄标记 第20章 写屏障的能开销 20.1 运行时切换GC算法 20.2 解释器的写屏障 20.3 JIT编译器的写屏障后记参考文献


