GC 与延迟

垃圾回收会造成周期性停顿并恶化尾延迟:通过堆大小、代际策略与低延迟收集器选择控制停顿,用 GC 日志量化频率与时长再调参。

观测GC 日志记录停顿次数与时长;对照 P99 时间线
手段控制堆增长速度、选择低延迟收集器、减少临时对象分配
验证调参前后对比停顿分布与吞吐,避免只盯单次停顿
  • 先看分配速率与对象存活时间,排除内存泄漏与对象风暴
  • 整理 GC 日志:停顿次数、时长与回收效果,与 P99 时间线对齐
  • 设定目标:如停顿 P99 上限与 Full GC 频率目标
  • 选择收集器并调参(堆大小、区域大小、暂停目标),一次只改一个变量
  • 相同负载复测,对比停顿分布、吞吐与 CPU 开销
  • 参数固化进部署配置并纳入监控,防止升级后失效
GC 调优的前提是分配行为健康:频繁 Full GC 往往指向内存泄漏或对象风暴。

易错点

  • 内存泄漏引发的 Full GC 被当作参数问题调优
  • 只看平均停顿,忽略影响 P99 的长时间停顿

数据来源与参考

  • 《深入理解 Java 虚拟机》(周志明)
  • 《性能之巅(第 2 版)》(Gregg)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌