背景介绍:7种垃圾收集器作用于不同的分代,如果两个收集器之间存在连续,就说明他们可以搭配使用。
从JDK1.3到现在,从Serial收集器-》Parallel收集器-》CMS-》G1,用户线程停顿时间不断缩短,但仍然无法完全消除
收集器 | 串行/并行/并发 | 新生代/老年代 | 收集算法 | 目标 | 适用场景 | 备注 |
---|---|---|---|---|---|---|
Serial | 串行 | 新生代 | 复制算法 | 响应速度优先 | 单CPU环境下的Client模式 | |
Serial Old | 串行 | 老年代 | 标记-整理算法 | 响应速度优先 | 单CPU环境下的Client模式、CMS的后备预案 | Serial收集器的老年代版本 |
ParNew | 并行 | 新生代 | 复制算法 | 响应速度优先 | 多CPU环境时在Server模式下与CMS配合 | Serial收集器的多线程版本 |
Parallel Scavenge | 并行 | 老年代 | 复制算法 | 吞吐量优先 | 在后台运算而不需要太多交互的任务 | 类似于ParNew收集器,有自己的特点 |
Parallel Old | 并行 | 老年代 | 标记-整理算法 | 吞吐量优先 | 在后台运算而不需要太多交互的任务 | Parallel Scavenge收集器的老年代版本 |
CMS | 并发 | 老年代 | 标记-清除算法 | 响应速度优先 | 集中在互联网站或者B/S系统服务端的Java应用 | |
G1 | 并发 | 新生代、老年代 | 标记-清除算法、复制算法 | 响应速度优先 | 面向服务端应用,将来替代CMS |
-
1、Serial收集器:串行/单线程收集器,使用一条垃圾收集线程去完成垃圾收集,而且它在进行垃圾收集的时候会暂停其他所有