JVM常用垃圾回收器相关参数配置

Parallel Scavenge 、Parallel Old组合

这是一种追求吞吐量的垃圾收集器组合,JDK1.7和1.8中默认的垃圾回收器,所以有必要了解一下。

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

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

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

CMS

一种追求停顿时间的垃圾回收器,不用太过关注,毕竟要被G1取代。

-XX:CMSInitiatingOccupancyFraction
这个参数指的是一个百分比(0-100),表示当内存空间使用率达到百分之N时就开始执行垃圾回收,设置的过小,容易导致内存利用率低,设置过高,如果并发回收时,内存无法满足程序分配新对象的需要,就会出现一次“并发失败”(Concurrent Mode Failure),冻结用户线程的执行,临时启用Serial Old收集器来重新进行老年代的垃圾收集, 但这样停顿时间就很长了。

JDK5时这个值默认为68%,JDK6时,已经把默认值提升至92%,这个值要根据实际情况来设置。

-XX:ConcGCThreads
设置用于并发GC的线程数。缺省值取决于JVM可用的CPU数量。

-XX:CMSFullGCsBeforeCompaction
这个参数的作用是要求CMS收集器在执行过若干次(数量 由参数值决定)不整理空间的FullGC之后,下一次进入Full GC前会先进行碎片整理(默认值为0,表示每次进入Full GC时都进行碎片整理)。

G1

-XX:MaxGCPauseMillis
控制最大的停顿时间,这依然是一个软目标,不要盲目的把这个值设置的过低,否则G1最终也只能牺牲每次回收的垃圾量而导致垃圾回收变得更频繁,这反而降低了总体性能,此值需根据实际情况设置,一般设置在200ms左右。

-XX:G1HeapRegionSize
设置 Region 区域的大小。值是 2 的幂,范围是 1 MB 到 32 MB 之间。

-XX:ConcGCThreads
设置用于并发GC的线程数。缺省值取决于JVM可用的CPU数量。

-XX:InitiatingHeapOccupancyPercent
设置触发标记周期的 Java 堆占用率阈值。默认占用率是整个 Java 堆的 45%。与CMS一样主要注意避免此值过大或过小。

注意使用 -Xmn 选项或 -XX:NewRatio 等其他相关选项显式设置年轻代大小。固定年轻代的大小会影响暂停时间目标。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

码拉松

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

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

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

打赏作者

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

抵扣说明:

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

余额充值