万本电子书0元读

万本电子书0元读

顶部广告

深入探索JVM垃圾回收:ARM服务器垃圾回收的挑战和优化电子书

垃圾回收原理过于抽象,垃圾回收调优过于依赖经验,明确垃圾回收实现与硬件之间的关系是学习垃圾回收时所面临的的主要挑战。 本书从工程实践角度,以实际产品为例,全面、系统地介绍JVM和垃圾回收的基础知识、垃圾回收的原理和实现、JVM垃圾回收的参数、ARM服务器上的GC优化和调整,既涵盖垃圾回收的理论知识,又提供大量工程实践案例。

售       价:¥

纸质售价:¥96.70购买纸书

16人正在读 | 0人评论 6.6

作       者:彭成寒

出  版  社:机械工业出版社

出版时间:2022-07-01

字       数:29.5万

所属分类: 科技 > 计算机/网络 > 程序设计

温馨提示:数字商品不支持退换货,不提供源文件,不支持导出打印

为你推荐

  • 读书简介
  • 目录
  • 累计评论(0条)
  • 读书简介
  • 目录
  • 累计评论(0条)
本书介绍JVM和垃圾回收基础知识、垃圾回收原理和实现、JVM垃圾回收的参数、ARM服务器上的GC优化和调整,涉及部分垃圾回收的理论知识,但更关注工程实践。希望通过对实践的分析,让读者了解如何实现一款“令人满意”的垃圾回收器,即满足业务诉求,在停顿时间、吞吐量、资源消耗、实现复杂度、稳定性等方面行了折中的垃圾回收器。  全书共分为四个部分: 第1部分,介绍虚拟机执行的基础知识以及垃圾回收的相关知识; 第2部分,介绍JVM中实现的六种垃圾回收算法; 第3部分,介绍JVM提供了哪些参数用于控制垃圾回收的运行; 第4部分,以鲲鹏920为例介绍ARM服务器以及在ARM服务器下如何实现GC才能充分发挥硬件的性能。<br/>【推荐语】<br/>垃圾回收原理过于抽象,垃圾回收调优过于依赖经验,明确垃圾回收实现与硬件之间的关系是学习垃圾回收时所面临的的主要挑战。 本书从工程实践角度,以实际产品为例,全面、系统地介绍JVM和垃圾回收的基础知识、垃圾回收的原理和实现、JVM垃圾回收的参数、ARM服务器上的GC优化和调整,既涵盖垃圾回收的理论知识,又提供大量工程实践案例。<br/>【作者】<br/>彭成寒 虚拟机技术专家,目前主要从事JVM、V8和WebAssembly等虚拟机的研究和发。他有超过15年的工作经验,从事过应用软件、大数据发等工作。他是源社区OpenEuler技术委员会委员,负责Compiler SIG;还是毕昇JDK的主要维护者和贡献者,著有《JVM G1源码分析和调优》《新一代垃圾回收器ZGC设计与实现》。<br/>
目录展开

版权页

作者简介

前言

第一部分 Java虚拟机和垃圾回收基础知识

第1章 Java代码执行过程介绍

1.1 代码执行过程概述

1.1.1 编译执行

1.1.2 解释执行

1.1.3 混合执行

1.2 从C代码执行过程看编译器和操作系统协同工作

1.2.1 从源代码到目标代码

1.2.2 操作系统如何执行目标代码

1.3 从C++代码的执行过程看编译器支持面向对象语言

1.3.1 封装支持

1.3.2 继承支持

1.3.3 多态支持

1.4 Java代码执行过程简介

1.4.1 Java代码到字节码

1.4.2 JVM加载字节码

1.4.3 解释执行

1.4.4 编译执行

1.5 内存管理

1.6 线程管理

1.7 扩展阅读:JIT概述

第2章 JVM中垃圾回收相关的基本知识

2.1 GC算法分类

2.2 GC涉及的对象表示

2.3 GC算法概述

2.3.1 复制算法

2.3.2 标记清除算法

2.3.3 标记压缩算法

2.3.4 分代回收

2.4 GC的根

2.4.1 强根

2.4.2 Java引用引入的弱根

2.4.3 JVM优化实现引入的弱根

2.4.4 JVM中根的构成

2.5 安全点

2.5.1 解释线程进入安全点

2.5.2 编译线程进入安全点

2.5.3 本地线程进入安全点

2.5.4 JVM内部并发线程进入安全点

2.5.5 安全点小结

2.6 扩展阅读:垃圾回收器请求内存设计

第二部分 JVM垃圾回收器详解

第3章 串行回收

3.1 分代堆内存管理概述

3.1.1 堆设计

3.1.2 分代边界

3.1.3 回收设计思路

3.2 新生代内存管理

3.2.1 新生代内存分配

3.2.2 垃圾回收的触发机制

3.2.3 适用于单线程的复制回收算法

3.2.4 适用于分代的复制回收算法

3.2.5 引用集管理

3.3 老生代内存管理

3.3.1 堆空间回收的触发

3.3.2 堆空间回收算法过程介绍

3.3.3 适用于分代的标记压缩算法

3.3.4 标记-压缩的优化

3.4 扩展阅读:不同的复制算法比较及对程序员的启迪

第4章 并发标记清除回收

4.1 内存管理

4.2 并行的新生代回收

4.2.1 一般根集合的并行处理

4.2.2 老生代到新生代引用的并行处理

4.2.3 卡表的竞争操作介绍

4.2.4 并行复制算法卡表设计

4.3 并发回收的难点

4.3.1 三色标记法

4.3.2 难点示意图

4.3.3 读屏障处理

4.3.4 写屏障之增量标记

4.3.5 写屏障之SATB标记

4.4 并发的老生代回收

4.4.1 内存管理

4.4.2 标记清除算法概述

4.4.3 并发算法触发时机

4.4.4 并发标记清除之初始标记

4.4.5 并发标记清除之并发标记

4.4.6 并发标记清除之预清理

4.4.7 并发标记清除之可终止预清理

4.4.8 并发标记清除之再标记

4.4.9 并发标记清除之清除

4.4.10 并发标记清除之内存空间调整

4.4.11 并发标记清除之复位

4.4.12 并发算法难点

4.5 Full GC

4.6 扩展阅读:标记栈溢出的各种处理方法

4.6.1 重新标记法

4.6.2 全局列表法

4.6.3 逆指针法

4.7 扩展阅读:元数据内存管理

4.7.1 内存管理

4.7.2 分配

4.7.3 回收

4.7.4 元数据管理的优化

第5章 并行回收

5.1 内存管理

5.1.1 内存管理模型

5.1.2 NUMA支持

5.1.3 内存分配和GC触发流程

5.2 Minor GC

5.3 Full GC

5.3.1 算法概述

5.3.2 算法实现与演示

5.4 扩展阅读:并行任务的负载均衡机制

5.4.1 并行任务的窃取

5.4.2 并行任务的终止

第6章 垃圾优先

6.1 内存管理概述

6.1.1 分代下的分区管理

6.1.2 新生代大小设计

6.1.3 回收机制的设计

6.2 引用集设计

6.2.1 引用集存储

6.2.2 引用集处理流程

6.2.3 引用集写入

6.3 新生代回收和混合回收

6.3.1 回收过程中引用关系处理

6.3.2 混合回收导致停顿时间不符合预期的处理方法

6.3.3 NUMA-Aware支持

6.3.4 云场景的支持

6.3.5 并发标记和Minor GC、Mixed GC的交互

6.4 并发标记

6.4.1 SATB算法介绍

6.4.2 增量并发标记算法

6.5 Full GC

6.5.1 串行实现算法

6.5.2 并行实现算法

6.6 扩展阅读:OpenJ9中的Balanced GC介绍

6.6.1 内存管理的区别

6.6.2 大对象设计的区别

6.6.3 回收的区别

6.6.4 并发标记的区别

6.6.5 Full GC与Balanced GC的区别

第7章 Shenandoah

7.1 内存模型

7.1.1 内存分配

7.1.2 垃圾回收的触发

7.2 并发标记设计

7.3 并发转移设计

7.3.1 引用不变性

7.3.2 目标空间不变性

7.3.3 源空间不变性

7.4 垃圾回收实现

7.4.1 垃圾回收策略

7.4.2 垃圾回收模式

7.4.3 正常回收算法

7.4.4 优化模式垃圾回收

7.4.5 垃圾回收的降级

7.4.6 遍历回收算法

7.4.7 垃圾回收触发的时机

7.4.8 其他细节

7.5 扩展阅读:OpenJ9中的实时垃圾回收器Metronome介绍

第8章 ZGC

8.1 内存管理

8.1.1 内存管理模型

8.1.2 高速分配设计

8.2 回收设计

8.2.1 算法概述

8.2.2 视图状态

8.2.3 读屏障

8.2.4 高效的标记和转移设计

8.2.5 垃圾回收触发的时机

8.3 垃圾回收实现

8.3.1 回收实现

8.3.2 多线程高效地标记

8.3.3 多线程高效地转移

8.3.4 标记和重定位合并的优缺点

8.4 ZGC新特性概览

8.4.1 并发类卸载

8.4.2 并发根扫描

8.5 扩展阅读:分配预测模型的理论基础

第三部分 JVM中垃圾回收相关参数介绍

第9章 GC通用参数

9.1 GC生产参数

9.1.1 GC选择相关参数

9.1.2 GC工作线程相关参数

9.1.3 内存设置相关参数

9.1.4 停顿时间相关参数

9.1.5 执行效率相关参数

9.1.6 大页和NUMA参数

9.1.7 GC日志相关参数

9.1.8 其他参数

9.2 GC实验参数

9.2.1 GC选择相关参数

9.2.2 引用处理相关参数

9.2.3 GC任务均衡相关参数

9.3 GC诊断参数

9.3.1 GC工作线程相关参数

9.3.2 GC校验相关参数

9.3.3 其他参数

9.4 可动态调整的参数

9.5 重要参数小结

第10章 Parallel GC参数

10.1 生产参数

10.1.1 并行压缩相关参数

10.1.2 并行复制相关参数

10.2 重要参数小结

第11章 CMS参数

11.1 生产参数

11.1.1 老生代分配相关参数

11.1.2 老生代合并相关参数

11.1.3 空闲列表管理相关参数

11.1.4 老生代预清理相关参数

11.1.5 老生代再标记相关参数

11.1.6 Minor GC相关参数

11.1.7 老生代GC触发控制相关参数

11.1.8 老生代并行/并发控制相关参数

11.1.9 其他参数

11.2 诊断参数

11.2.1 老生代碎片化相关参数

11.2.2 Minor GC效率相关参数

11.2.3 其他参数

11.3 可动态调整的参数

11.4 重要参数小结

第12章 G1参数

12.1 生产参数

12.1.1 并发标记相关参数

12.1.2 引用集处理相关参数

12.1.3 内存设置相关参数

12.1.4 Minor GC相关参数

12.1.5 GC触发控制相关参数

12.1.6 混合回收相关参数

12.2 实验参数

12.2.1 内存设置相关参数

12.2.2 Minor GC相关参数

12.2.3 混合回收相关参数

12.2.4 其他参数

12.3 可动态调整的参数

12.4 诊断参数

12.5 重要参数小结

第13章 Shenandoah参数

13.1 生产参数

13.1.1 垃圾回收模式相关参数

13.1.2 垃圾回收策略相关参数

13.2 实验参数

13.2.1 内存设置相关参数

13.2.2 垃圾回收策略及相关参数

13.2.3 并发标记相关参数

13.3 诊断参数

13.4 重要参数小结

第14章 ZGC参数

14.1 生产参数

14.2 诊断参数

14.3 重要参数小结

第四部分 ARM服务器上的GC挑战和优化

第15章 泰山服务器概述

15.1 ARM架构

15.1.1 ARM介绍

15.1.2 ARMv8-A特性

15.2 鲲鹏处理器

15.2.1 芯片架构

15.2.2 内存管理子系统

15.2.3 流水线技术

15.2.4 内存一致性

15.3 泰山服务器

第16章 AArch64平台上的GC挑战和优化

16.1 内存序

16.2 众核架构对性能的影响

16.3 NUMA对性能的影响

16.4 其他影响

累计评论(0条) 0个书友正在讨论这本书 发表评论

发表评论

发表评论,分享你的想法吧!

买过这本书的人还买过

读了这本书的人还在读

回顶部