JVM之Parallel Scavenge回收器

吞吐量优先

 

一、概述:

HotSpot的年轻代中除了拥有ParNew收集器是基于并行回收的以外,Parallerl Scavenge收集器同样也是采用了复制算法、并行回收、“Stop-the-World”机制。

二、和ParNew并行收集器比较:

a、ParNew收集器不同,Parallel Scavenge收集器的目标则是达到一个可控制的吞吐量(Throughput),它也被称为吞吐量优先的垃圾收集器。

b、自适应调节策略也是Parallel Scavenge 与ParNew一个重要区别。

三、使用场景:

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

四、老年代垃圾收集器:

Parallel 收集器在JDK1.6时提供了用于执行老年代垃圾收集的Parallel Old收集器,用于代替老年代的Serial Old收集器。

五、Parallel Old采用的机制:

Parallel Old 收集器采用了标记-压缩算法,但同样也是基于并行回收和“Stop-the-World”机制、

六、图解:

 七、组合使用:

八、Parallel Scavenge 的垃圾收集器的相关参数设置:

(1)-XX:+UserParallelGC  :手动指定年轻代使用Parallel 并行收集器执行内存回收任务。

(2)-XX:+UserParallelOldGC :手动指定老年代都是使用并行回收收集器。

         分别适用于新生代和老年代。默认jdk8是开启的。

         上面两个参数,默认开启一个,另一个也会被开启。(互相激活)

(3)-XX:ParallelGCThreads 设置年轻代并行收集器的线程数。一般地,最好与CPU数量相等,

以避免过多的线程数影响垃圾收集性能。

        默认情况下,当CPU数量小于8个,ParallelGCThreads的值等于CPU数量。

        当CPU数量大于8个,ParallelGCThreads的值等于3+[5*CPU_Count/8].

(4)-XX:MaxGCPauseMillis 设置垃圾收集器最大停顿时间(即STW的时间)。单位是毫秒。

为了尽可能地把停顿时间控制在MaxGCPauseMills以内,收集器在工作时会调整Java堆大小或者其他一些参数。

对于用户来讲,停顿时间越短体验越好,但是在服务器端,我们注重高并发,整体的吞吐量,所以服务器端适合Parallel,进行控制。

该参数使用需谨慎。

(5)-XX:GCTimeRatio 垃圾收集时间占总时间的比例(=1/(N+1))。用于衡量吞吐量的大小。

取值范围(0,100).默认值是99,也就是垃圾收集时间不超过1%.

与前一个-XX:MaxGCPauseMilis 参数有一定的矛盾性。暂停时间越长,Radio参数就容易超过设定的比例。

(6)-XX:+UserAdaptiveSizePolicy 设置Parallel Scavenge 收集器具有自适应调节策略。

在这种模式下,年轻代的大小、Eden和Survivor的比例、晋升老年代的对象年龄等参数会被自动调整,已达到在堆大小,吞吐量和停顿时间的平衡点。

在手动调优比较困难的场合,可以直接使用这种自适应的方式,仅指定虚拟机的最大堆大小,目标吞吐量(GCTimeRatio)和停顿时间(MaxGCPauseMills),让虚拟机自己完成调优工作。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值