当前位置:当前位置:主页 > 计算机电子书 > Java > Java虚拟机 pdf电子书
深入Java虚拟机:JVM G1GC的算法与实现

深入Java虚拟机:JVM G1GC的算法与实现 PDF 超清版

  • 更新:2021-04-30
  • 大小:129 MB
  • 类别:Java虚拟机
  • 作者:中村成洋
  • 出版:人民邮电出版社
  • 格式:PDF

  • 资源介绍
  • 学习心得
  • 相关内容

深入Java虚拟机:JVM G1GC的算法与实现》是由人民邮电出版社出版的一本关于Java虚拟机方面的书籍,作者是中村成洋,主要介绍了关于Java虚拟机、JVM、G1GC、算法与实现方面的知识内容,目前在Java虚拟机类书籍综合评分为:8.5分。

书籍介绍

编辑推荐

结合实用JVM,图解Java垃圾回收机制的关键技术!
·90张图表+33段代码,轻松理解G1GC算法原理
·HotSpotVM源码剖析,深入探讨G1GC具体实现
1.深入Java虚拟机底层原理,详细解读经典GC算法;
2.理论结合实际,基于HotSpotVM源码探讨具体实现;
3.图文并茂、深入浅出,辅以大量插图和代码细致讲解。

内容简介

本书深入Java虚拟机底层原理,对JVM内存管理中的垃圾回收算法G1GC进行了详细解读。全书分为“算法篇”和“实现篇”两大部分:前一部分主要介绍G1GC的算法原理,内容包括G1GC的并发标记、转移功能、软实时性的实现和分代G1GC模式;后一部分聚焦算法篇中没有详细讲解的实现部分,基于HotSpotVM源码,讲解对象管理功能、内存分配器的机制、线程管理方法和G1GC的具体实现。
本书以图配文,通俗易懂,既系统介绍了G1GC的基础算法,又贴近现实,剖析了实用JVM中的G1GC实现,同时还包含了作者对G1GC的研究成果和独到见解,是深入理解JVM和G1GC机制的佳作。

作者简介

中村成洋(作者) 生于1985年。日本网络应用通信研究所研究员。因为偶然的机会对GC产生浓厚兴趣,本人却说不清为何喜欢GC,被人追问原因时,总是回答“是缘分”。现在是CRuby的committer,每天致力于GC的改善。著有《垃圾回收的算法与实现》。 吴炎昌(译者) 毕业于西北工业大学软件工程专业,曾供职于多家日本软件公司,从事系统开发工作。2015年回国后加入美团点评,现任系统研发工程师。爱好旅行、电影和品尝各种美食,有一位志趣相投的伴侣。

目录

  • 算法篇
  • 第 1章 G1GC是什么
  • 1.1 G1GC和实时性 2
  • 1.2 堆结构 5
  • 1.3 执行过程 5
  • 1.4 并发标记和转移 7
  • 第 2章 并发标记
  • 2.1 什么是并发标记 8
  • 2.2 标记位图 9
  • 2.3 执行步骤 10
  • 2.4 步骤①——初始标记阶段 10
  • 2.5 步骤②——并发标记阶段 12
  • 2.6 步骤③——最终标记阶段 18
  • 2.7 步骤④——存活对象计数 19
  • 2.8 步骤⑤——收尾工作 21
  • 2.9 总结 22
  • 第3章 转移
  • 3.1 什么是转移 25
  • 3.2 转移专用记忆集合 26
  • 3.3 转移专用写屏障 28
  • 3.4 转移专用记忆集合维护线程 31
  • 3.5 热卡片 32
  • 3.6 执行步骤 32
  • 3.7 步骤①——选择回收集合 33
  • 3.8 步骤②——根转移 34
  • 3.9 步骤③——转移 39
  • 3.10 标记信息的作用 39
  • 3.11 总结 40
  • 第4章 软实时性
  • 4.1 用户的需求 41
  • 4.2 预测转移时间 42
  • 4.3 预测可信度 43
  • 4.4 GC暂停处理的调度 44
  • 4.5 并发标记中的暂停处理 46
  • 第5章 分代G1GC模式
  • 5.1 不同点 47
  • 5.2 新生代区域 48
  • 5.3 分代对象转移 49
  • 5.4 执行过程简述 49
  • 5.5 分代选择回收集合 51
  • 5.6 设置最大新生代区域数 51
  • 5.7 GC的切换 52
  • 5.8 GC执行的时机 52
  • 第6章 算法篇总结
  • 6.1 关系图 53
  • 6.2 优点 54
  • 6.3 缺点 54
  • 6.4 结束语 55
  • 实现篇
  • 第7章 准备工作
  • 7.1 什么是HotSpotVM 58
  • 7.2 什么是OpenJDK 58
  • 7.3 获取源码 59
  • 7.4 代码结构 60
  • 7.5 两个特殊类 61
  • 7.6 适用于各种操作系统的接口 63
  • 第8章 对象管理功能
  • 8.1 对象管理功能的接口 64
  • 8.2 对象管理功能的全貌 65
  • 8.3 CollectedHeap类 66
  • 8.4 CollectorPolicy类 67
  • 8.5 各个GC类 68
  • 第9章 堆结构
  • 9.1 VM堆 70
  • 9.2 G1GC堆 72
  • 9.3 常驻空间 75
  • 第 10章 分配器
  • 10.1 内存分配的流程 76
  • 10.2 VM堆的申请 77
  • 10.3 VM堆的分配 79
  • 10.4 对象的分配 86
  • 10.5 TLAB 90
  • 第 11章 对象结构
  • 11.1 oopDesc类 92
  • 11.2 klassOopDesc类 93
  • 11.3 Klass类 94
  • 11.4 类之间的关系 95
  • 11.5 不要在oopDesc类中定义虚函数 96
  • 11.6 对象头 97
  • 第 12章 HotSpotVM的线程管理
  • 12.1 线程操作的抽象化 103
  • 12.2 Thread类 103
  • 12.3 线程的生命周期 104
  • 12.4 Windows线程的创建 107
  • 12.5 Windows线程的处理开始 110
  • 12.6 Linux线程的创建 113
  • 12.7 开始Linux线程的处理 117
  • 第 13章 线程的互斥处理
  • 13.1 什么是互斥处理 119
  • 13.2 互斥量 119
  • 13.3 监视器 120
  • 13.4 监视器的实现 122
  • 13.5 Monitor类 127
  • 13.6 Mutex类 129
  • 13.7 MutexLocker类 130
  • 第 14章 GC线程(并行篇)
  • 14.1 并行执行的流程 132
  • 14.2 AbstractWorkGang类 136
  • 14.3 AbstractGangTask类 137
  • 14.4 GangWorker类 137
  • 14.5 并行GC的执行示例 138
  • 第 15章 GC线程(并发篇)
  • 15.1 ConcurrentGCThread类 146
  • 15.2 SuspendibleThreadSet类 147
  • 15.3 安全点 150
  • 15.4 VM线程 152
  • 第 16章 并发标记
  • 16.1 并发标记的全貌 155
  • 16.2 步骤①——初始标记阶段 160
  • 16.3 步骤②——并发标记阶段 168
  • 16.4 步骤③——最终标记阶段 170
  • 16.5 步骤④——存活对象计数 172
  • 16.6 步骤⑤——收尾工作 172
  • 第 17章 转移
  • 17.1 转移的全貌 174
  • 17.2 步骤①——选择回收集合 178
  • 17.3 步骤②——根转移 181
  • 17.4 步骤③——转移 185
  • 第 18章 预测与调度
  • 18.1 根据历史记录进行预测 187
  • 18.2 并发标记的调度 194
  • 18.3 转移的调度 195
  • 第 19章 准确式GC的实现
  • 19.1 栈图 197
  • 19.2 句柄区域与句柄标记 209
  • 第 20章 写屏障的性能开销
  • 20.1 运行时切换GC算法 212
  • 20.2 解释器的写屏障 214
  • 20.3 JIT编译器的写屏障 216
  • 后记 220
  • 参考文献 223

资源获取

相关资源

网友留言