𝔖 Scriptorium
✦   LIBER   ✦

📁

深入Java虚拟机:JVM G1GC的算法与实现

✍ Scribed by 中村成洋


Publisher
人民邮电出版社
Year
2020
Tongue
Chinese
Leaves
246
Series
图灵程序设计丛书·Java系列
Category
Library

⬇  Acquire This Volume

No coin nor oath required. For personal study only.

✦ Synopsis


本书深入Java虚拟机底层原理,对JVM内存管理中的垃圾回收算法G1GC进行了详细解读。全书分为“算法篇”和“实现篇”两大部分:前一部分主要介绍G1GC的算法原理,内容包括G1GC的并发标记、转移功能、软实时性的实现和分代G1GC模式;后一部分聚焦算法篇中没有详细讲解的实现部分,基于HotSpotVM源码,讲解对象管理功能、内存分配器的机制、线程管理方法和G1GC的具体实现。

本书以图配文,通俗易懂,既系统介绍了G1GC的基础算法,又贴近现实,剖析了实用JVM中的G1GC实现,同时还包含了作者对G1GC的研究成果和独到见解,是深入理解JVM和G1GC机制的佳作。

✦ Table of Contents


封面
作译者简介
数字版权声明
彩插
扉页
版权页
前言
目录
算法篇
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 什么是OpenJDK
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 Klass类
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编译器的写屏障
后记
参考文献
版权声明


📜 SIMILAR VOLUMES


虚拟机设计与实现--以JVM为例
✍ 李晓峰 📂 Library 📅 2020-1 🏛 人民邮电出版社 🌐 Chinese

本书从一位虚拟机(VM)架构师的角度,以易于理解、层层深入的方式介绍了各种主题和算法,尤其是不同VM通用的主要技术。这些算法用图示充分解释,用便于理解的代码片段实现,使得这些抽象概念对系统软件工程师而言具像化并可编程。书中还包括一些同类文献中较少涉及的主题,例如运行时辅助、栈展开和本地接口。本书集理论性与实践性于一身,不仅结合了高层设计功能与底层实现,而且还结合了高级主题与商业解决方案,是VM设计和工程实践方面的理想参考读物。

深入解析Android虚拟机
✍ 张子言 📂 Library 📅 2014 🏛 清华大学出版社 🌐 Chinese

<p>本书十三个章节,分别讲解了android系统基础知识,android系统的结构和核心框架,Java虚拟机和Dalvik虚拟机的知识,实现程序编译和调试,Dalvik的运作流程,DEX优化和安全管理,Android虚拟机生命周期的管理和内存分配策略,虚拟机垃圾回收和线程管理,JNI基本原理,JIT编译的基本莞城和具体方法,以及虚拟机中异常管理机制方面的知识</p>