垃圾回收器

垃圾回收器

Serial收集器

  1. 概念:单线程收集器,在进行垃圾收集时会暂停其他所有的工作线程,直到收集结束。
  2. 优点:简单高效
  3. 适用区域:新生代

ParNew收集器

  1. 概念:Serial收集器的多线程版本
  2. 可用参数:
    • -XX:SurvivorRatio
    • -XX:PretenureSizeThreshold
    • -XX:HandlePromotionFailure
  3. 适用:新生代收集器,只能与CMS收集器配合适用

Parallel Scavenge收集器

  1. 概念:使用复制算法并行的多线程收集器
  2. 特点:关注于达到一个可控制的吞吐量,吞吐量=运行用户代码时间/(运行用户代码时间+垃圾收集时间)
  3. 可用参数:
    • -XX:GCTimeRatio
    • -XX:MaxGCPauseMillis
    • -XX:UseAdaptiveSizePolicy
  4. 适用:新生代

Serial Old收集器

  1. 概念:使用标记-整理算法的单线程收集器
  2. 用途:
    • 与Parallel Scavenge配合适用
    • 作为CMS收集器的后备预案
  3. 适用:老年代

Parallel Old收集器

  1. Parallel Scavenge收集器的老年代版本,使用多线程和标记-整理算法。
  2. 适用:在注重吞吐量及CPU资源敏感的场合,优先考虑Parallel Scavenge加Parallel Old收集器。

CMS收集器

  1. 概念:一种以获取最短回收停顿时间为目标的收集器,使用标记-清除算法
  2. 收集过程:
    • 初始标记:Stop the World,标记GC Roots能直接关联到的对象
    • 并发标记:GC Roots Tracing
    • 重新标记:修正并发标记阶段产生变化的标记记录
    • 并发清除
  3. 缺点:
    • 对CPU资源敏感
    • 无法处理浮动垃圾
    • 产生大量的空间碎片
  4. 可用参数:
    • -XX:UseCMSCompactAtFullCollection
    • -XX:CMSFullGCsBeforeCompaction

G1收集器

未完待续。