ParNew和Parallel Scavenge是两种不同的Java虚拟机垃圾收集器,主要用于新生代的垃圾收集。它们的主要区别包括:1.默认的配合的老年代收集器不同;2.目标和应用场景的差异;3.暂停时间和吞吐量的考虑;4.自适应调节的能力;5.与CMS和G1收集器的互动。了解这两者的区别,将帮助开发者更好地优化应用性能和垃圾收集策略。
1.默认的配合的老年代收集器不同
ParNew收集器通常与CMS收集器配合使用,作为CMS的默认新生代收集器。而Parallel Scavenge收集器通常与Parallel Old收集器配合,形成整个Parallel收集策略。
2.目标和应用场景的差异
ParNew注重的是降低暂停时间,因此更适合需要低延迟的应用,如Web服务器、交互式应用等。而Parallel Scavenge注重高吞吐量,更适合后台运算为主的场景,如大型计算任务、批处理等。
3.暂停时间和吞吐量的考虑
ParNew为了保证低延迟,可能会牺牲部分吞吐量。而Parallel Scavenge则相反,它会牺牲部分延迟来保证最大的吞吐量。
4.自适应调节的能力
Parallel Scavenge具有自适应调节策略(-XX:+UseAdaptiveSizePolicy),能够根据系统的实际运行情况调整各个区域的大小及目标暂停时间。ParNew没有这种自适应机制。
5.与CMS和G1收集器的互动
ParNew与CMS的结合相对紧密,它们共同为低延迟场景提供服务。而Parallel Scavenge并不适合与CMS配合,但在Java 8及之前,它是与G1收集器配合的一个选项。
常见问答
1.ParNew和Parallel Scavenge都是哪个区域的垃圾收集器?
ParNew和Parallel Scavenge都是新生代的垃圾收集器。
2.ParNew收集器通常与哪个老年代收集器配合使用?
ParNew收集器通常与CMS收集器配合使用。
3.对于后台运算为主的大型计算任务,应该首选哪个收集器?
对于后台运算为主的大型计算任务,Parallel Scavenge收集器更为合适,因为它注重高吞吐量。
4.Parallel Scavenge有哪个特点能够自动调整垃圾收集策略?
Parallel Scavenge具有自适应调节策略(-XX:+UseAdaptiveSizePolicy),它能够根据系统的实际运行情况调整各个区域的大小及目标暂停时间。
5.在需要低延迟的应用场景中,应该优先考虑哪个收集器?
在需要低延迟的应用场景中,应该优先考虑ParNew收集器,因为它注重降低暂停时间。