垃圾回收器
Serial收集器
- 概念:单线程收集器,在进行垃圾收集时会暂停其他所有的工作线程,直到收集结束。
- 优点:简单高效
- 适用区域:新生代
ParNew收集器
- 概念:Serial收集器的多线程版本
- 可用参数:
- -XX:SurvivorRatio
- -XX:PretenureSizeThreshold
- -XX:HandlePromotionFailure
- 适用:新生代收集器,只能与CMS收集器配合适用
Parallel Scavenge收集器
- 概念:使用复制算法并行的多线程收集器
- 特点:关注于达到一个可控制的吞吐量,吞吐量=运行用户代码时间/(运行用户代码时间+垃圾收集时间)
- 可用参数:
- -XX:GCTimeRatio
- -XX:MaxGCPauseMillis
- -XX:UseAdaptiveSizePolicy
- 适用:新生代
Serial Old收集器
- 概念:使用标记-整理算法的单线程收集器
- 用途:
- 与Parallel Scavenge配合适用
- 作为CMS收集器的后备预案
- 适用:老年代
Parallel Old收集器
- Parallel Scavenge收集器的老年代版本,使用多线程和标记-整理算法。
- 适用:在注重吞吐量及CPU资源敏感的场合,优先考虑Parallel Scavenge加Parallel Old收集器。
CMS收集器
- 概念:一种以获取最短回收停顿时间为目标的收集器,使用标记-清除算法
- 收集过程:
- 初始标记:Stop the World,标记GC Roots能直接关联到的对象
- 并发标记:GC Roots Tracing
- 重新标记:修正并发标记阶段产生变化的标记记录
- 并发清除
- 缺点:
- 对CPU资源敏感
- 无法处理浮动垃圾
- 产生大量的空间碎片
- 可用参数:
- -XX:UseCMSCompactAtFullCollection
- -XX:CMSFullGCsBeforeCompaction
G1收集器
未完待续。