Serial,Parallel,CMS,G1 四大 GC 收集器特点小结

1.Serial 收集器

一个单线程的收集器,在进行垃圾收集时候,必须暂停其他所有的工作线程直到它收集结束。

特点:CPU 利用率最高,停顿时间即用户等待时间比较长。
适用场景:小型应用
通过 JVM 参数-XX:+UseSerialGC 可以使用串行垃圾回收器。

##
2.Parallel 收集器

采用多线程来通过扫描并压缩堆

特点:停顿时间短,回收效率高,对吞吐量要求高。
适用场景:大型应用,科学计算,大规模数据采集等。
通过 JVM 参数 XX:+USeParNewGC 打开并发标记扫描垃圾回收器。

##
3.CMS 收集器

采用“标记-清除”算法实现,使用多线程的算法去扫描堆,对发现未使用的对象进行回收。

(1)初始标记
(2)并发标记
(3)并发预处理
(4)重新标记
(5)并发清除
(6)并发重置
特点:响应时间优先,减少垃圾收集停顿时间
适应场景:服务器、电信领域等。
通过 JVM 参数 -XX:+UseConcMarkSweepGC 设置

##
4.G1 收集器

在 G1 中,堆被划分成 许多个连续的区域(region)。采用 G1 算法进行回收,吸收了 CMS 收集器特点。

特点:支持很大的堆,高吞吐量
–支持多 CPU 和垃圾回收线程
–在主线程暂停的情况下,使用并行收集
–在主线程运行的情况下,使用并发收集
实时目标:可配置在 N 毫秒内最多只占用 M 毫秒的时间进行垃圾回收
通过 JVM 参数 –XX:+UseG1GC 使用 G1 垃圾回收器

转载:https://blog.csdn.net/u013812939/article/details/48782343