目标
应先修复分配模式再调收集器。本工作流在负载下收集 GC 日志量化停顿的频率与时长,用分配剖析找出产生垃圾最多的代码,通过复用缓冲、避免无谓创建降低分配率,最后再调整堆与收集器设置并验证停顿下降且吞吐不降。
步骤要点
- 在负载下收集 GC 日志量化停顿。
- 用分配剖析找出主要分配来源。
- 通过复用与减少创建降低分配率。
- 再调整堆与收集器设置并验证。
# analyse GC pause distribution
jq -r 'select(.gcId) | .pause' gc.log | sort -n | tail -20
验证
按顺序执行上述步骤后,逐项确认每个步骤的预期状态均已满足;只有全部预期状态成立,才认为本流程完成。若某一步未达到预期状态,应先按排错提示排查,不要跳过继续,以免掩盖问题。
排错提示
- 分配仍在churn 时调参数是白费。
- 堆过大会拉长停顿。
- 无 GC 日志只能靠猜。
适用边界
- 需要 GC 日志与剖析器。
- 堆大小应匹配存活集。