有了 CMS,为什么还要引入 G1?

缺点:CMS同样存在三个明显的缺点:

  • Mark Sweep算法导致内存碎片较多。
  • CMS的并发能力高度依赖CPU资源,而并发回收时垃圾收集线程可能会竞争用户线程的资源,导致用户程序性能下降。
  • 并发清除阶段中,用户线程仍在运行,这会产生所谓的"浮动垃圾"(Floating Garbage)。本次垃圾收集无法处理浮动垃圾,而必须等到下一次垃圾收集才能处理。如果浮动垃圾过多,将触发新的垃圾回收,导致性能下降。

G1收集器主要解决了内存碎片过多的问题。

标签: java, Java面试题, Java问题合集, Java编程, Java问题精选, Java常见问题