CMS和G1谁是赢家

程序员小迷 2024-06-01 12:19:36

JVM存在有CMS(Concurrent Mark Sweep)垃圾收集器和G1(Garbage First)垃圾收集器,它们的优缺点对比如下:

一、CMS:

1.特点

1)以获取最短回收停顿时间为目标,适用于对响应性能有较高要求的服务器应用,如Web服务器等。

2)包含4个阶段:初始标记,并发标记,重新标记,并发清除。

初始标记和重新标记需要暂停应用,并发标记和并发清除可以与应用程序并发执行。

3)并发收集。

4)只能在老年代使用。

2.缺点

1)对 CPU 资源敏感、无法处理浮动垃圾、标记——清除算法可能会产生内存碎片。当内存碎片过多时,可能提前触发Full GC,影响性能。

2)牺牲一定的吞吐量。

二、G1

1.特点

1)专门针对拥有多核处理器和大内存的机器的收集器,旨在满足GC响应时间的延迟可控,并尽可能提高程序的吞吐量。

2)将堆划分为多个大小相等的独立区域 Region。

3)优点:并发收集、并行与并发、分代收集、空间整合、可预测停顿。

4)使用标记整理算法。包含4个运行步骤:

初始标记(Initial Marking)

并发标记(Concurrent Marking)

最终标记(Final Marking)

筛选回收(Live Data Counting and Evacuation)

5)整理内存,不会产生内存碎片。

6)停顿时间可控:G1可以根据用户设定的允许的收集停顿时间,优先处理回收价值收益最大的Region。

7)适用于多核、大内存环境,适合服务端应用。能在追求低延迟的同时保证高吞吐量。

8)在新生代和老年代都可使用。

2.缺点

1)有时G1的吞吐量可能不如其他收集器。

微风不燥,阳光正好,你就像风一样经过这里,愿你停留的片刻温暖舒心。

我是程序员小迷(致力于C、C++、Java、Kotlin、Android、Shell、JavaScript、TypeScript、Python等编程技术的技巧经验分享),若作品对您有帮助,请关注、分享、点赞、收藏、在看、喜欢,您的支持是我们为您提供帮助的最大动力。

欢迎关注。助您在编程路上越走越好!

0 阅读:0

程序员小迷

简介:致力于Android、iOS、C、Java等编程技术的技巧经验分享