7种垃圾收集器

来源:互联网 发布:矩阵行列式计算器 编辑:程序博客网 时间:2024/06/16 20:58




补充总结:

Serial收集器:
优点:简单而高效(与其他收集器的单线程比),对于限定单个CPU的环境来说,Serial收集器由于没有线程交互的开销,专心做垃圾收集自然可以获得最高的单线程收集效率。

ParNew收集器:

ParNew收集器其实就是Serial收集器的多线程版本,使用多线程进行垃圾收集。

优点:ParNew收集器在单CPU的环境中绝对不会有比Serial收集器更好的效果,甚至由于存在线程交互的开销,当然,随着可以使用的CPU的数量的增加,它对于GC时系统资源
的有效利用还是很有好处的。 它默认开启的收集线程数与CPU的数量相同。
Parallel Scavenge收集器:
自适应调整策略是Parallel Scavenge收集器和ParNew收集器的一个重要区别。另一个重要区别就是前者是多线程收集器,后者是单线程收集器。
CMS收集器:
整个过程分为4个步骤,包括:
初始标记(CMS initial mark)
并发标记(CMS concurrent mark)
重新标记(CMS remark)
并发清除(CMS concurrent sweep)
其中,初始标记、 重新标记这两个步骤仍然需要“Stop The World”。


1. Java 8 默认的GC是Parallel GC。
2. 上述收集器中,新生代均采用复制算法,老年代均采用标志-整理算法(除CMS)。
3. 单线程收集器的“单线程”的意义并不仅仅说明它只会使用一个CPU或一条收集线程去完成垃圾收集工作,更重要的是在它进行垃圾收集时,必须暂停其他所有的工作线程,直到它收集结束。