跳到主要内容

GC 调优实战:从日志到参数

📺 配套视频

📝 知识点总结

常用 GC 收集器对比

收集器算法适用场景特点
Serial复制/标记整理客户端应用单线程,STW
Parallel复制/标记整理吞吐量优先多线程,JDK8 默认
CMS标记清除低延迟并发标记,已废弃
G1分区收集大堆低延迟JDK9+ 默认
ZGC染色指针超低延迟STW < 1ms

GC 日志关键指标

# 开启 GC 日志(JDK11+)
-Xlog:gc*:file=gc.log:time,uptime,level,tags:filecount=5,filesize=100m

关注三个核心指标:

  1. GC 频率:Young GC > 10次/秒 说明新生代太小
  2. GC 耗时:单次 Full GC > 1秒 需要优化
  3. 堆使用率:Old 区持续增长不回落 → 内存泄漏

常用调优参数

# G1 收集器推荐配置
-XX:+UseG1GC
-XX:MaxGCPauseMillis=200 # 目标停顿时间
-XX:G1HeapRegionSize=8m # Region 大小
-XX:InitiatingHeapOccupancyPercent=45 # 触发并发标记的堆占用率
-Xms4g -Xmx4g # 堆大小固定,避免动态扩缩

🔗 延伸阅读