CMS垃圾收集器有哪些优点和缺点?

CMS(Concurrent Mark Sweep)垃圾收集器是一种以获取最短回收停顿时间为目标的收集器。它的主要特点是并发收集、低停顿。以下是 CMS 垃圾收集器的优缺点:

优点

  1. 并发收集:CMS 收集器大部分工作(包括初始标记、重新标记和清除)都在用户线程运行的同时进行,因此减少了GC对应用程序的影响。

  2. 低停顿:由于大部分GC过程可以与用户线程并发执行,所以CMS收集器在回收过程中产生的停顿时间相对较短。

缺点

  1. CPU资源占用高:CMS收集器在并发阶段会占用一部分CPU资源来进行垃圾回收,因此可能会对用户线程的执行速度产生一定影响。

  2. 产生内存碎片:CMS收集器采用的是“标记-清除”算法,这种算法在进行垃圾回收后,可能会产生大量不连续的内存碎片,进而影响大对象的分配。

  3. 无法处理浮动垃圾:在并发清除阶段,因为用户线程的运行,可能会产生新的垃圾,这些垃圾被称为“浮动垃圾”,CMS无法在当前的垃圾收集周期处理这些浮动垃圾。

发表评论

后才能评论