当前位置:当前位置:主页 > 计算机电子书 > Java > JVM垃圾回收 pdf电子书
深入探索JVM垃圾回收:ARM服务器垃圾回收的挑战和优化

深入探索JVM垃圾回收:ARM服务器垃圾回收的挑战和优化 PDF 清晰完整版

  • 更新:2022-09-13
  • 大小:17.7 MB
  • 类别:JVM垃圾回收
  • 作者:彭成寒
  • 出版:机械工业出版社
  • 格式:PDF

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

深入探索JVM垃圾回收:ARM服务器垃圾回收的挑战和优化》是由机械工业出版社出版的一本关于JVM垃圾回收方面的书籍,作者是彭成寒,主要介绍了关于JVM、ARM服务器方面的知识内容,目前在JVM垃圾回收类书籍综合评分为:7.8分。

书籍介绍

内容简介

本书介绍JVM和垃圾回收基础知识、垃圾回收原理和实现、JVM垃圾回收的参数、ARM服务器上的GC优化和调整,涉及部分垃圾回收的理论知识,但更关注工程实践。希望通过对实践的分析,让读者了解如何实现一款“令人满意”的垃圾回收器,即满足业务诉求,在停顿时间、吞吐量、资源消耗、实现复杂度、稳定性等方面进行了折中的垃圾回收器。

全书共分为四个部分:
第yi部分,介绍虚拟机执行的基础知识以及垃圾回收的相关知识;
第二部分,介绍JVM中实现的六种垃圾回收算法;
第三部分,介绍JVM提供了哪些参数用于控制垃圾回收的运行;
第四部分,以鲲鹏920为例介绍ARM服务器以及在ARM服务器下如何实现GC才能充分发挥硬件的性能。

作者简介

彭成寒 高级Java工程师,目前主要从事风控系统设计、算法建模、大数据处理等工作,有超过10年的Java和C++开发经验。

目录

  • 前言
  • 第一部分Java虚拟机和垃圾回收基础知识
  • 第1章Java代码执行过程介绍3
  • 1.1代码执行过程概述3
  • 1.1.1编译执行4
  • 1.1.2解释执行4
  • 1.1.3混合执行4
  • 1.2从C代码执行过程看编译器和操作系统协同工作5
  • 1.2.1从源代码到目标代码5
  • 1.2.2操作系统如何执行目标代码7
  • 1.3从C++代码的执行过程看编译器支持面向对象语言9
  • 1.3.1封装支持10
  • 1.3.2继承支持11
  • 1.3.3多态支持12
  • 1.4Java代码执行过程简介13
  • 1.4.1Java代码到字节码15
  • 1.4.2JVM加载字节码16
  • 1.4.3解释执行17
  • 1.4.4编译执行22
  • 1.5内存管理26
  • 1.6线程管理27
  • 1.7扩展阅读:JIT概述27
  • 第2章JVM中垃圾回收相关的基本知识30
  • 2.1GC算法分类30
  • 2.2GC涉及的对象表示32
  • 2.3GC算法概述34
  • 2.3.1复制算法34
  • 2.3.2标记清除算法36
  • 2.3.3标记压缩算法37
  • 2.3.4分代回收38
  • 2.4GC的根40
  • 2.4.1强根40
  • 2.4.2Java引用引入的弱根42
  • 2.4.3JVM优化实现引入的弱根43
  • 2.4.4JVM中根的构成45
  • 2.5安全点46
  • 2.5.1解释线程进入安全点46
  • 2.5.2编译线程进入安全点47
  • 2.5.3本地线程进入安全点48
  • 2.5.4JVM内部并发线程进入安全点48
  • 2.5.5安全点小结49
  • 2.6扩展阅读:垃圾回收器请求内存设计50
  • 第二部分JVM垃圾回收器详解
  • 第3章串行回收57
  • 3.1分代堆内存管理概述57
  • 3.1.1堆设计58
  • 3.1.2分代边界60
  • 3.1.3回收设计思路62
  • 3.2新生代内存管理63
  • 3.2.1新生代内存分配64
  • 3.2.2垃圾回收的触发机制67
  • 3.2.3适用于单线程的复制回收算法69
  • 3.2.4适用于分代的复制回收算法73
  • 3.2.5引用集管理75
  • 3.3老生代内存管理79
  • 3.3.1堆空间回收的触发80
  • 3.3.2堆空间回收算法过程介绍81
  • 3.3.3适用于分代的标记压缩算法83
  • 3.3.4标记-压缩的优化86
  • 3.4扩展阅读:不同的复制算法比较及对程序员的启迪88
  • 第4章并发标记清除回收92
  • 4.1内存管理92
  • 4.2并行的新生代回收95
  • 4.2.1一般根集合的并行处理96
  • 4.2.2老生代到新生代引用的并行处理97
  • 4.2.3卡表的竞争操作介绍99
  • 4.2.4并行复制算法卡表设计103
  • 4.3并发回收的难点105
  • 4.3.1三色标记法105
  • 4.3.2难点示意图105
  • 4.3.3读屏障处理107
  • 4.3.4写屏障之增量标记107
  • 4.3.5写屏障之SATB标记108
  • 4.4并发的老生代回收108
  • 4.4.1内存管理109
  • 4.4.2标记清除算法概述112
  • 4.4.3并发算法触发时机113
  • 4.4.4并发标记清除之初始标记114
  • 4.4.5并发标记清除之并发标记116
  • 4.4.6并发标记清除之预清理118
  • 4.4.7并发标记清除之可终止预清理120
  • 4.4.8并发标记清除之再标记123
  • 4.4.9并发标记清除之清除124
  • 4.4.10并发标记清除之内存空间调整126
  • 4.4.11并发标记清除之复位127
  • 4.4.12并发算法难点127
  • 4.5Full GC131
  • 4.6扩展阅读:标记栈溢出的各种处理方法131
  • 4.6.1重新标记法132
  • 4.6.2全局列表法132
  • 4.6.3逆指针法133
  • 4.7扩展阅读:元数据内存管理133
  • 4.7.1内存管理133
  • 4.7.2分配135
  • 4.7.3回收135
  • 4.7.4元数据管理的优化136
  • 第5章并行回收138
  • 5.1内存管理138
  • 5.1.1内存管理模型140
  • 5.1.2NUMA支持141
  • 5.1.3内存分配和GC触发流程143
  • 5.2Minor GC144
  • 5.3Full GC145
  • 5.3.1算法概述145
  • 5.3.2算法实现与演示148
  • 5.4扩展阅读:并行任务的负载均衡机制151
  • 5.4.1并行任务的窃取153
  • 5.4.2并行任务的终止156
  • 第6章垃圾优先160
  • 6.1内存管理概述162
  • 6.1.1分代下的分区管理163
  • 6.1.2新生代大小设计164
  • 6.1.3回收机制的设计166
  • 6.2引用集设计169
  • 6.2.1引用集存储169
  • 6.2.2引用集处理流程172
  • 6.2.3引用集写入174
  • 6.3新生代回收和混合回收176
  • 6.3.1回收过程中引用关系处理178
  • 6.3.2混合回收导致停顿时间不符合预期的处理方法178
  • 6.3.3NUMA-Aware支持180
  • 6.3.4云场景的支持180
  • 6.3.5并发标记和Minor GC、Mixed GC的交互181
  • 6.4并发标记183
  • 6.4.1SATB算法介绍183
  • 6.4.2增量并发标记算法186
  • 6.5Full GC188
  • 6.5.1串行实现算法188
  • 6.5.2并行实现算法189
  • 6.6扩展阅读:OpenJ9中的Balanced GC介绍190
  • 6.6.1内存管理的区别191
  • 6.6.2大对象设计的区别192
  • 6.6.3回收的区别193
  • 6.6.4并发标记的区别194
  • 6.6.5Full GC与Balanced GC的区别195
  • 第7章Shenandoah196
  • 7.1内存模型198
  • 7.1.1内存分配198
  • 7.1.2垃圾回收的触发198
  • 7.2并发标记设计200
  • 7.3并发转移设计201
  • 7.3.1引用不变性202
  • 7.3.2目标空间不变性203
  • 7.3.3源空间不变性205
  • 7.4垃圾回收实现206
  • 7.4.1垃圾回收策略206
  • 7.4.2垃圾回收模式207
  • 7.4.3正常回收算法208
  • 7.4.4优化模式垃圾回收209
  • 7.4.5垃圾回收的降级209
  • 7.4.6遍历回收算法210
  • 7.4.7垃圾回收触发的时机211
  • 7.4.8其他细节211
  • 7.5扩展阅读:OpenJ9中的实时垃圾回收器Metronome介绍214
  • 第8章ZGC219
  • 8.1内存管理222
  • 8.1.1内存管理模型222
  • 8.1.2高速分配设计224
  • 8.2回收设计226
  • 8.2.1算法概述227
  • 8.2.2视图状态229
  • 8.2.3读屏障232
  • 8.2.4高效的标记和转移设计234
  • 8.2.5垃圾回收触发的时机239
  • 8.3垃圾回收实现243
  • 8.3.1回收实现243
  • 8.3.2多线程高效地标记244
  • 8.3.3多线程高效地转移246
  • 8.3.4标记和重定位合并的优缺点246
  • 8.4ZGC新特性概览247
  • 8.4.1并发类卸载248
  • 8.4.2并发根扫描249
  • 8.5扩展阅读:分配预测模型的理论基础251
  • 第三部分JVM中垃圾回收相关参数介绍
  • 第9章GC通用参数259
  • 9.1GC生产参数259
  • 9.1.1GC选择相关参数259
  • 9.1.2GC工作线程相关参数261
  • 9.1.3内存设置相关参数263
  • 9.1.4停顿时间相关参数274
  • 9.1.5执行效率相关参数275
  • 9.1.6大页和NUMA参数284
  • 9.1.7GC日志相关参数285
  • 9.1.8其他参数285
  • 9.2GC实验参数288
  • 9.2.1GC选择相关参数288
  • 9.2.2引用处理相关参数288
  • 9.2.3GC任务均衡相关参数288
  • 9.3GC 诊断参数289
  • 9.3.1GC工作线程相关参数289
  • 9.3.2GC校验相关参数290
  • 9.3.3其他参数291
  • 9.4可动态调整的参数292
  • 9.5重要参数小结293
  • 第10章Parallel GC参数294
  • 10.1生产参数294
  • 10.1.1并行压缩相关参数294
  • 10.1.2并行复制相关参数296
  • 10.2重要参数小结296
  • 第11章CMS参数298
  • 11.1生产参数298
  • 11.1.1老生代分配相关参数298
  • 11.1.2老生代合并相关参数300
  • 11.1.3空闲列表管理相关参数300
  • 11.1.4老生代预清理相关参数303
  • 11.1.5老生代再标记相关参数306
  • 11.1.6Minor GC相关参数307
  • 11.1.7老生代GC触发控制相关参数308
  • 11.1.8老生代并行/并发控制相关参数310
  • 11.1.9其他参数311
  • 11.2诊断参数313
  • 11.2.1老生代碎片化相关参数313
  • 11.2.2Minor GC效率相关参数314
  • 11.2.3其他参数314
  • 11.3可动态调整的参数314
  • 11.4重要参数小结315
  • 第12章G1参数316
  • 12.1生产参数316
  • 12.1.1并发标记相关参数316
  • 12.1.2引用集处理相关参数318
  • 12.1.3内存设置相关参数321
  • 12.1.4Minor GC相关参数321
  • 12.1.5GC触发控制相关参数322
  • 12.1.6混合回收相关参数322
  • 12.2实验参数323
  • 12.2.1内存设置相关参数323
  • 12.2.2Minor GC相关参数324
  • 12.2.3混合回收相关参数325
  • 12.2.4其他参数325
  • 12.3可动态调整的参数326
  • 12.4诊断参数326
  • 12.5重要参数小结327
  • 第13章Shenandoah参数328
  • 13.1生产参数328
  • 13.1.1垃圾回收模式相关参数328
  • 13.1.2垃圾回收策略相关参数329
  • 13.2实验参数329
  • 13.2.1内存设置相关参数329
  • 13.2.2垃圾回收策略及相关参数330
  • 13.2.3并发标记相关参数335
  • 13.3诊断参数336
  • 13.4重要参数小结338
  • 第14章ZGC参数339
  • 14.1生产参数339
  • 14.2诊断参数341
  • 14.3重要参数小结342
  • 第四部分ARM服务器上的GC挑战和优化
  • 第15章泰山服务器概述345
  • 15.1ARM架构346
  • 15.1.1ARM介绍346
  • 15.1.2ARMv8-A特性348
  • 15.2鲲鹏处理器353
  • 15.2.1芯片架构353
  • 15.2.2内存管理子系统355
  • 15.2.3流水线技术356
  • 15.2.4内存一致性357
  • 15.3泰山服务器358
  • 第16章AArch64平台上的GC挑战和优化363
  • 16.1内存序363
  • 16.2众核架构对性能的影响369
  • 16.3NUMA对性能的影响370
  • 16.4其他影响370

资源获取

相关资源

网友留言