JVM深入学习(二十二)-7种垃圾回收器总结

学习完了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是目前大多数项目可以使用的最优解,特殊场景除外.
上一篇:使用maven创建java项目


下一篇:Istio简介及基于ACK安装Istio