ParNew垃圾收集器是什么?为什么要使用?

2020-05-04 10:31:25 java常见问答 8880

今天小编给大伙们带来Java虚拟机中垃圾收集器的ParNew,不知道大家是否有了解呢?跟其他的收集器有何不同呢?为什么要使用呢?接下来一起来了解下吧。

ParNew收集器是JAVA虚拟机中垃圾收集器的一种。

它是Serial收集器的多线程版本,除了使用多条线程进行垃圾收集之外,其余行为包括Serial收集器可用的所有控制参数、收集算法、Stop The World、对象分配规则、回收策略等都与Serial收集器一致。

为什么要使用ParNew呢?

需要注意的是,ParNew在单核甚至双核环境下绝对不会有比Serial收集器更好的效果,但是随着CPU数量的增加ParNew相较于Serial的优势会越来越明显,但并不是成倍增长的,原因还是那个,多线程切换的开销。

有哪些特点呢?

1.-XX:UseParNewGC:启用ParNew收集器。

2.-XX:ParalletGCThreads:设定并行垃圾收集的线程数量。

3.默认开启的线程数等于cpu数。

4.多核环境较Serial效率高。

5.并行收集(非并发)。

6.复制算法。

ParNew收集器的工作过程如何?

ParNew收集器除了多线程收集之外,其他与Serial收集器相比并没有太多创新之处,但它却是许多运行在Server模式下的虚拟机中首选的新生代收集器,其中有一个与性能无关但很重要的原因是,除了Serial收集器外,目前只有它能与CMS收集器配合工作。

在JDK1.5时期,HotSpot退出了一款在强交互应用中几乎可成为有划时代意思的垃圾收集器————CMS收集器,这款收集器是HotSpot虚拟机中第一款真正意义上的并发收集器,它第一次实现了让垃圾收集线程与用户线程同时工作。

ParNew收集器在单CPU的环境中绝对不会有比Serial收集器更好的效果,甚至由于存在线程交互的开销,该收集器在通过多线程技术实现两个CPU环境中都不能百分百地保证能超越Serial收集器。

随着可用使用的CPU数量的增加,它对于GC时系统资源的利用还是很有好处的。它默认开启收集线程数与CPU的数量相同,在CPU非常多的环境下,可用使用-XX:ParallelGCThreads参数来限制垃圾收集单线程数。

以上就是今天所讲的ParNew收集器的知识,如果想要了解更多关于java架构师的知识,请继续关注本网站。