7种垃圾收集器

本文介绍了Java中的几种垃圾收集器,包括Serial、ParNew、ParallelScavenge和CMS收集器的特点及工作原理。同时对比了单线程与多线程收集器的优缺点,并解释了不同收集器适用的场景。




补充总结:

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或一条收集线程去完成垃圾收集工作,更重要的是在它进行垃圾收集时,必须暂停其他所有的工作线程,直到它收集结束。
 

 







 
 
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值