- 可以理解为ParNew收集器是Serial收集器的多线程版本。Par是Parallel的缩写,New说明只能处理的是新生代。
- ParNew收集器和Serial收集器非常相似,区别只有ParNew采用的是并行垃圾收集。ParNew在新生代中也是采用复制算法、”Stop the World“机制。
- ParNew是很多JVM运行在Server模式下新生代默认的垃圾收集器。
对于新生代,回收次数频繁,使用并行方式高效。
对于老年代,回收次数少,使用串行方式节省资源。(CPU并行需要切换线程,串行可以省去切换线程的资源)。
- 多CPU环境下,ParNew可以充分利用CPU、多核心等硬件资源优势,可以更快的完成垃圾收集,提升程序吞吐量。单CPU场景下,ParNew并不比Serial收集器更高效。ParNew创建的线程虽然多,但是也会带来额外的上下文切换开销。
- 除Serial收集器外,只有ParNew能与CMS收集器配合工作。
- 在程序中,开发人员可以使用"-XX:+UseParNewGC"手动指定使用ParNew收集器执行内存回收任务。它表示年轻代使用ParNew收集器,不影响老年代。
- -XX:ParallelGCThreads限制线程数量,默认开启和CPU数量相同的线程数。