Serial是一个单线程的垃圾收集器,在执行垃圾收集的时候,必须暂停其它的线程。相较于其他单线程的垃圾收集器,优点主要体现为简单高效,额外内存消耗最小的。目前仍然是HotSpot虚拟机运行在客户端模式下默认的新生代收集器。
HotSpot虚拟机默认的新生代收集器
ParNew收集器的回收策略和Serial收集器的一样,不同点在于Serial收集器是单线程,ParNew收集器是多线程并行收集,即同一时间有多个线程同时处理,此时用户线程仍处于等待状态。
Parallel Scavenge收集器基于标记-复制算法,跟ParNew收集器几乎一样。他的特点在于尽可能的解决用户等待的时间,即提高吞吐量。
Serial Old是Serial收集器的老年代版本,也是单线程的收集器。使用标记-整理算法。 作用: 1、 JDK1.5 以及以前的版本中与 Parallel Scavenge 收集器搭配使用, 2、作为 CMS 收集器的后备方案。
parallel Old收集器是Parallel scavenge收集器的老年代版本,支持多线程并发收集,使用标记-整理算法,JDK6才开始提供的,最大的特点就是吞吐量优先。
CMS(Concurrent Mark Sweep)收集器是一种以获取最短回收停顿时间为目标的收集器。使用标记-清除算法。整个过程分为4步: 1)初始标记(CMS initial mark) 2)并发标记(CMS concurrent mark) 3)重新标记(CMS remark) 4)并发清除(CMS concurrent sweep) 初始标记和重新标记暂定用户线程,并发标记和并发清除不需要暂停用户线程。 优点:并发收集、低停顿。 缺点:对处理器资源非常敏感 无法清理并发时用户又产生的新垃圾(浮动垃圾) 标记-清除算法导致的大量空间碎片
G1收集器把整个堆划分为一个一个等大小的区域(region)。特点: 支持很大的堆 高吞吐量 –支持多CPU和垃圾回收线程 –在主线程暂停的情况下,使用并行收集 –在主线程运行的情况下,使用并发收集 实时目标:可配置在N毫秒内最多只占用M毫秒的时间进行垃圾回收