Java垃圾收集器详解

26 阅读1分钟

1. Serial收集器

  • 算法:新生代使用标记-复制算法,老年代使用标记-整理算法。
  • 特点:单线程,会触发全局停顿(Stop The World)。
  • 适用场景:单核心或小型应用。

2. ParNew收集器

  • 算法:新生代使用标记-复制算法,老年代使用标记-整理算法。
  • 特点:多线程,注重吞吐量,会触发全局停顿。
  • 适用场景:多核心服务器。

3. Parallel Scavenge收集器

  • 算法:新生代使用标记-复制算法,老年代使用标记-整理算法。
  • 特点:多线程,强调吞吐量优先,适用于后台运算任务。
  • 适用场景:吞吐量优先的应用。

4. Serial Old收集器

  • 算法:老年代使用标记-整理算法。
  • 特点:单线程,会触发全局停顿。
  • 适用场景:单核心或小型应用。

5. Parallel Old收集器

  • 算法:老年代使用标记-整理算法。
  • 特点:多线程,注重吞吐量,会触发全局停顿。
  • 适用场景:多核心服务器。

6. CMS(Concurrent Mark Sweep)收集器

  • 算法:老年代使用标记-清除算法。
  • 特点:并发收集,减少停顿时间,但存在碎片问题。
  • 适用场景:强调低延迟,对停顿时间敏感的应用。

7. G1(Garbage-First)收集器

  • 算法:采用标记-整理算法。
  • 特点:面向服务端,垃圾收集停顿更可控,可预测。
  • 适用场景:大堆内存,注重低延迟。