垃圾回收器
一、GC分类与性能指标
1.1 垃圾回收器概述
1.2 垃圾回收器分类
- 按线程数分,可以分为串行垃圾回收器和并行垃圾回收器
- 按工作模式分,可以分为并发式垃圾回收器和独占式垃圾回收器
并发式垃圾回收器:与应用程序线程交替工作,以尽可能减少应用程序的停顿时间;
独占式垃圾回收器:stop the world 一旦运行,就停止应用程序中的所有用户线程,直到垃圾回收过程完全结束。
- 按碎片处理方式分,可分为压缩式垃圾回收器和非压缩式垃圾回收器
压缩式垃圾回收器:会在回收完成后,对存活对象进行压缩整理,消除回收后的碎片;
>> 再分配对象空间使用:指针碰撞
非压缩式垃圾回收器:不进行这步操作
>>再分配对象空间使用:空闲列表
- 按工作的内存区间分,又可分为年轻代垃圾回收器和老年代垃圾回收器
1.3 评估GC的性能指标
三个标红的指标关系:
1.4 吞吐量(throughput)
1.5 吞吐量vs暂停时间
二、不同的垃圾回收器概述
2.1 七款经典垃圾回收器
2.2 与垃圾分代之间的关系
2.3 垃圾收集器的组合关系
三、Serial回收器:串行回收
3.1 概述
3.2 线程关系
3.3 优势
四、ParNew回收器:并行回收
4.1 介绍
4.2 参数设置
五、Parallel回收器:吞吐量优先
5.1 介绍
5.2 线程关系
5.3 参数设置
5.4 Parallel Scavenge回收器(吞吐量优先)
- 参数配置:
六、CMS回收器:低延迟
6.1 概述
6.2 工作原理
问题1:
6.3 优缺点
6.4 参数设置
6.5 小结
七、G1回收器:区域化分代式
7.1 问题一
- 既然我们已经有了前面几个强大的GC,为什么还要发布Garbage First(G1)GC?
答:
7.2 问题二
为什么名字叫Garbage First(G1)呢?
答:
7.3 G1的优势
7.4 缺点
7.5 参数设置
7.6 适用场景
7.7 分区Region:化整为零
设置H区的原因:
7.8 G1垃圾回收过程
7.9 G1回收过程详细过程
-
过程一:年轻代GC
-
过程二:并发标记过程
-
过程三:混合回收
-
可选的过程四:Full GC
7.10 G1回收器优化建议
八、垃圾回收器总结
8.1 几种垃圾收集器对比
8.2 GC发展阶段
8.3 面试题
九、GC日志分析
9.1 参数设置
9.2 补充说明
十、垃圾回收器的新发展
10.1 ZGC