谈 JVM 参数 GC 线程数 ParallelGCThreads 合理性设置

在讲这个参数之前,先谈谈 JVM 垃圾回收(GC)算法的两个优化标的:吞吐量和停顿时长。JVM 会使用特定的 GC 收集线程,当 GC 开始的时候,GC 线程会和业务线程抢占 CPU 时间,吞吐量定义为 CPU 用于业务线程的时间与 CPU 总消耗时间的比值。为了承接更大的流量,吞吐量越大越好。为了安全的垃圾回收,在 GC 或者 GC 某个阶段,所有业务线程都会被暂停,也就是 STW(Stop The World),STW 持续时间就是停顿时长,停顿时长影响响应速度,因此越小越好。
摘要由CSDN通过智能技术生成

1. ParallelGCThreads 参数含义

在讲这个参数之前,先谈谈 JVM 垃圾回收(GC)算法的两个优化标的:吞吐量和停顿时长。JVM 会使用特定的 GC 收集线程,当 GC 开始的时候,GC 线程会和业务线程抢占 CPU 时间,吞吐量定义为 CPU 用于业务线程的时间与 CPU 总消耗时间的比值。为了承接更大的流量,吞吐量越大越好。

为了安全的垃圾回收,在 GC 或者 GC 某个阶段,所有业务线程都会被暂停,也就是 STW(Stop The World),STW 持续时间就是停顿时长,停顿时长影响响应速度,因此越小越好。

这两个优化目标是有冲突的,在一定范围内,参与 GC 的线程数越多,停顿时长越小,但吞吐量也越小。生产实践中,需要根据业务特点设置一个合理的 GC 线程数,取得吞吐量和停顿时长的平衡。

目前广泛使用的 GC 算法,包括 PS MarkSweep/PS Scavenge, ConcurrentMarkSweep/ParNew, G1 等,都可以通过 ParallelGCThreads 参数来指定 JVM 在并行 GC 时参与垃圾收集的线程数。该值设置过小,GC 暂停时间变长影响 RT,设置过大则影响吞吐量,从而导致 CPU 过高。

2. ParallelGCThreads 参数设置

GC 并发线程数可以通过 JVM 启动参数: -XX:ParallelGCThreads=<N>来指定。在未明确指定的情况下,JVM 会根据逻辑核数 ncpus,采用以下公式来计算默认值:

◦当 ncpus 小于 8 时,ParallelGCThreads &#

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值