CMS垃圾回收器有什么缺点?

提问者:帅平 问题分类:面试刷题
CMS垃圾回收器有什么缺点?
2 个回答
细腻长发姐
细腻长发姐
使用CMS的弊端就是一个死循环问题:
1. 内存碎片过多,导致空间利用率减低。
2. 空间本身就需要预留给用户线程使用,现在碎片内存又加剧了空间的问题,导致有可能垃圾收集器降级为Serial Old,卡顿时间更长。
3. 要处理内存碎片的问题(整理),同样会卡顿
发布于:1年前 (2023-03-16) IP属地:四川省
丢一地的真心、没人珍惜
丢一地的真心、没人珍惜
1、空间需要预留:CMS垃圾收集器可以一边回收垃圾,一边处理用户线程,那需要在这个过程中保证有充足的内存空间供用户使用。
如果CMS运行过程中预留的空间不够用了,会报错(Concurrent Mode Failure),这时会启动 Serial Old垃圾收集器进行老年代的垃圾回收,会导致停顿的时间很长。
显然啦,空间预留多少,肯定是有参数配置的

2、内存碎片问题:CMS本质上是实现了「标记清除算法」的收集器(从过程就可以看得出),这会意味着会产生内存碎片
由于碎片太多,又可能会导致内存空间不足所触发full GC,CMS一般会在触发full GC这个过程对碎片进行整理
整理涉及到「移动」/「标记」,那这个过程肯定会Stop The World的,如果内存足够大(意味着可能装载的对象足够多),那这个过程卡顿也是需要一定的时间的。
发布于:1年前 (2023-03-16) IP属地:四川省
我来回答