← 中文资源

简体中文版本

调优 JVM G1 堆区大小

调整 G1 区大小与停顿目标,缩短堆过大时因默认分区数不足导致的长停顿。

阅读英文原文

目标

大堆服务在负载下出现长时间 GC 停顿,默认分区大小导致分区数偏少。本配方先开启 GC 日志并查看停顿统计,再显式设置区大小与停顿目标,使 4GB 堆得到健康的分区数并使停顿趋近目标;提醒超过半个区的大对象(humongous)会造成额外停顿,需关注。

步骤要点

  1. 开启 GC 日志并查看停顿与撤离统计。
  2. 显式设置区大小与最大停顿目标。
  3. 关注 humongous 分配并降低最大对象预期。
  4. 放宽过于激进的停顿目标以免 GC 更频繁。
java -Xlog:gc*:file=gc.log:time,uptime -XX:+UseG1GC -jar app.jar

排错提示

  • 停顿仍长需检查 humongous 分配。
  • 目标过激进会增加 GC 频率、降低吞吐。
  • 调优依分配模式与堆大小而异。

适用边界

  • 不能修复泄漏或对象高频创建。
  • 区大小与堆大小相关。