JVM垃圾收集器详解之Parallel Scavenge

Parallel Scavenge是一款新生代垃圾收集器,我们非常有必要了解这款垃圾收集器,因为这款收集器可是JDK1.7和JDK1.8默认的新生代垃圾收集器。

对于新生代的垃圾回收一般都采用标记-复制算法,Parallel Scavenge也不例外,Parallel Scavenge也与ParNew收集器一样都是能够通过多线程并行收集的,那么Parallel Scavenge与ParNew相比有什么特别之处呢?

Parallel Scavenge的特别之处就在于它关注的是吞吐量,也就是运行代码时间与(运行代码时间+垃圾收集器时间)的比值,比如运行代码时间为99分钟,垃圾收集器运行时间为1分钟,那么吞吐量就是99%,追求高吞吐量可以最大程度的利用CPU资源完成运算的任务,这就比较适合关注后台运算,而与用户交互较少的场景。(CMS关注的是停顿时间)

Parallel Scavenge中提供了两个调整吞吐量相关的参数:

-XX:MaxGCPauseMillis

设置最大GC暂停时间的目标(以毫秒为单位)。这是一个软目标,并且JVM将尽最大的努力来实现它。默认情况下,没有最大暂停时间值。
下面的示例显示如何将最大目标暂停时间设置为500ms:
-XX:MaxGCPauseMillis = 500

当然你不能想当然的认为这个值设置的越小越好,你要知道Parallel Scavenge是如何做到控制停顿时间的?实际上就是简单的增加垃圾回收频率而已,也就是说你设置的停顿时间越短,垃圾回收的频率就会越频繁,比如:原来30秒一次垃圾回收,一次停顿2秒,现在由于设置的停顿时间为1秒,所以必须10秒执行一次垃圾回收,虽然停顿时间短了,但是吞吐量也低了。

-XX:GCTimeRatio

这个参数的值则应当是一个大于0小于100的整数,也就是垃圾收集时间占总时间的 比率,相当于吞吐量的倒数。譬如把此参数设置为19,那允许的最大垃圾收集时间就占总时间的5% (即1/(1+19)),默认值为99,即允许最大1%(即1/(1+99))的垃圾收集时间。

与Parallel Scavenge搭配使用的老年代垃圾收集器是Parallel Old,Parallel Old支持多线程并行收集,基于标记-整理算法实现,二者配合使用总比来说吞吐量要优于ParNew加CMS的组合。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码拉松

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值