23、JVM实战:7种垃圾回收器总结

本文全面总结Java JVM的7种垃圾回收器,包括Serial、Serial Old、ParNew、Parallel Scavenge、Parallel Old、CMS和G1。详细对比其并行/串行分类、回收算法、适用场景,并提供针对不同硬件配置和业务需求的垃圾回收器选择策略,帮助开发者优化应用性能。

学习完了7种垃圾回收器之后,总结一下
为啥是7种?
Serial
Serial Old
ParaNew
Parallel Scavenge
Parallel Old
CMS G1 共7种,其中主要学习的是Parallel + CMS +G1

垃圾回收器并行/串行/并发分类针对回收位置回收算法主要思想适用场景
Serial串行新生代复制算法低停顿时间硬件资源匮乏,单核cpu情况下
Serial Old串行老年代标记-压缩算法低停顿时间硬件资源匮乏,单核cpu情况下
ParNew并行新生代复制算法低停顿时间多核cpu场景下替代Serial
Parallel Scavenge并行新生代复制算法高吞吐量jdk8默认垃圾回收器,多用于服务端
Parallel Old并行老年代标记-压缩算法高吞吐量jdk8默认垃圾回收器,多用于服务端
CMS并行/并发老年代标记-清除算法低停顿时间适用于低停顿时间的场景,如移动端
G1并行/并发新生代/老年代复制算法/标记-压缩算法高吞吐量的前提下,尽量保证低停顿时间适用于服务端
jdk9之后默认垃圾回收器

1.1 垃圾回收器的选择

7种垃圾回收器以及他们的组合关系如何选择:
没有完美的垃圾回收器,只能针对不同的场景不同的业务来选择垃圾回收器

1、 当堆内存较小(100M以下)选择串行垃圾回收器;
2、 服务器硬件为单核,并且不要求低停顿时间的时候,选择串行垃圾回收器;
3、 多核cpu,要求高吞吐量选择并行垃圾回收器或者jvm默认垃圾回收器;
4、 多核cpu,要求低延迟时选择并发垃圾回收器;
5、 G1是目前大多数项目可以使用的最优解,特殊场景除外.;

版权声明:本文不是「本站」原创文章,版权归原作者所有 | 原文地址: