Oracle JDK 垃圾收集调优

11 篇文章 0 订阅

使用 Oracle 的 JDK 时,垃圾收集性能调优的目标是减少执行 Full GC 周期所需的时间。不应该尝试调整 JVM 来最小化 Full GC 的频率,因为这通常会导致在必须要强制执行Full GC时需要长达数秒才能完成。

在生产服务器的整个生命周期内实现较短垃圾收集时间的最简单和最可靠的方法是使用固定堆大小的收集器和并行年轻代收集器,将新生代大小限制为总堆的最多三分之一。

Oracle 建议使用垃圾优先 (G1) 垃圾收集器。

对于大多数生产引擎服务器(production engine servers),建议使用以下示例 JVM 设置:

-server -Xms24G -Xmx24G -XX:PermSize=512m -XX:+UseG1GC -XX:MaxGCPauseMillis=200 -XX:ParallelGCThreads=20 -XX:ConcGCThreads=5 -XX:InitiatingHeapOccupancyPercent=70

对于生产副本服务器(production replica servers),请使用示例设置:

-server -Xms4G -Xmx4G -XX:PermSize=512m -XX:+UseG1GC -XX:MaxGCPauseMillis=200 -XX:ParallelGCThreads=20 -XX:ConcGCThreads=5 -XX:InitiatingHeapOccupancyPercent=70

对于独立安装(standalone installations),请使用示例设置:

-server -Xms32G -Xmx32G -XX:PermSize=512m -XX:+UseG1GC -XX:MaxGCPauseMillis=200 -XX:ParallelGCThreads=20 -XX:ConcGCThreads=5 -XX:InitiatingHeapOccupancyPercent=70

以上选项的作用如下:

  • -Xms, -Xmx:设置堆大小的边界值以增加垃圾收集的可预测性。副本服务器中的堆大小受到限制,因此即使 Full GC 也不会触发 SIP 重传。-Xms设置起始大小以防止堆扩展引起的暂停。

  • -XX:+UseG1GC:使用垃圾优先 (G1) 收集器。

  • -XX:MaxGCPauseMillis:设置最大 GC 暂停时间的目标。这是一个软目标,JVM 将尽最大努力实现它。

  • -XX:ParallelGCThreads:设置垃圾收集器并行阶段使用的线程数。默认值因运行 JVM 的平台而异。

  • -XX:ConcGCThreads:并发垃圾收集器将使用的线程数。默认值因运行 JVM 的平台而异。

  • -XX:InitiatingHeapOccupancyPercent:启动并发 GC 周期的堆(整个)占用百分比。触发并发 GC 周期的 GC (包括 G1)使用此选项,基于整个堆的占用率而不只是其中一代的占用率。值 0 表示“执行恒定的 GC 循环”。默认值为 45。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值