淘先锋技术网

首页 1 2 3 4 5 6 7

ParNew回收器

1.如果说Serial GC是年轻代中的单线程垃圾收集器,那么ParNew收集器则是Serial收集器的多线程版本。

2.ParNew收集器除了采用并行回收的方式执行内存回收外,两款垃圾收集器之间没有任何区别。ParNew收集器在年轻代中也是采用复制算法"Stop-The-World"机制。

3.ParNew是很多JVM运行在Server模式下新生代的默认垃圾收集器。

ParNew回收器的工作过程如下图:

在程序中,开发人员可以通过选项”-XX:+UseParNewGC"手动指定使用ParNew收集器执行内存回收任务。它表示年轻代使用并行收集器,不影响老年代。也可以通过选项"-XX:ParallelGCThreads"限制线程数量,默认开启和CPU数据相同的线程数。

Parallel Scavenge回收器:吞吐量优先

PaParallel Scavenge收集器同样采用了复制算法、并行回收和"Stop The World"机制。它和ParNew收集器不同的是,PaParallel Scavenge收集器的目标则是达到一个可控制的吞吐量,它也被称为吞吐量优先的垃圾收集器。自适应调节策略也是PaParallel Scavenge与ParNew一个重要区别。

高吞吐量则可以高效地利用CPU时间,尽快完成程序的运算任务,主要适合在后台运算而不需要太多交互地任务。因此,常见在服务器环境中使用。例如,那些执行批量处理、订单处理、工资支付、科学计算的应用程序。

PaParallel Scavenge收集器在JDK1.6时提供了用于执行老年代收集的Parallel Old收集器,用来代替老年代的Serial Old收集器。Parallel Old收集器采用了标记-压缩算法,但同样也是基于并行回收和“Stop-The-World"机制。

PaParallel Scavenge工作过程如下:

在程序吞吐量优先的应用场景中,Parallel收集器和Parallel Old收集器的组合,在Server模式下的内存回收性能很不错。在JDK8中,默认是此垃圾收集器。