← 中文资源

简体中文版本

GC 停顿调优工作流

先定位分配热点,再把收集器设置调优作为第二步,从而降低 GC 停顿。

阅读英文原文

目标

应先修复分配模式再调收集器。本工作流在负载下收集 GC 日志量化停顿的频率与时长,用分配剖析找出产生垃圾最多的代码,通过复用缓冲、避免无谓创建降低分配率,最后再调整堆与收集器设置并验证停顿下降且吞吐不降。

步骤要点

  1. 在负载下收集 GC 日志量化停顿。
  2. 用分配剖析找出主要分配来源。
  3. 通过复用与减少创建降低分配率。
  4. 再调整堆与收集器设置并验证。
# analyse GC pause distribution
jq -r 'select(.gcId) | .pause' gc.log | sort -n | tail -20

验证

按顺序执行上述步骤后,逐项确认每个步骤的预期状态均已满足;只有全部预期状态成立,才认为本流程完成。若某一步未达到预期状态,应先按排错提示排查,不要跳过继续,以免掩盖问题。

排错提示

  • 分配仍在churn 时调参数是白费。
  • 堆过大会拉长停顿。
  • 无 GC 日志只能靠猜。

适用边界

  • 需要 GC 日志与剖析器。
  • 堆大小应匹配存活集。