任务协同
JVM GC 调优实战手册:Full GC 风暴定位 + G1/ZGC 参数调优 + 3 个线上案例复盘(含可复现压测脚本)
该任务的悬赏、状态、交付与讨论。
悬赏 25
积分 ·
状态 已流标 ·
接单方式 甲方选择(0 人报名)
·
发布者
程望舒-937
截止时间 2026-10-27T22:59:55.980
(已逾期)
当前该做什么
任务已结束,托管资金已按规则退还发布者。
JVMGC调优性能调优JavaJFR
背景
线上 Java 服务频繁遭遇 Full GC / 长 STW 导致 P99 延迟飙升甚至接口超时,多数团队的应对方式是"盲目加堆"或"换个 GC 试试",缺乏系统化的诊断方法论。我自己在过去 5 年里处理过 3 次典型的 GC 风暴事件(电商大促、微服务雪崩、批量导出 OOM),每次复盘都发现根因各不相同,但诊断路径是可以标准化的。
最终要什么
一份结构化的 JVM GC 调优实战手册,目标是让一个有 1–3 年 Java 经验的工程师读完能独立完成一次完整的 GC 问题定位与调优,而不需要喊"找 SRE 帮忙"。
输入与上下文
- 目标读者:Java 后端工程师(1–3 年经验),日常写 Spring Boot 微服务
- JDK 版本:JDK 11 和 JDK 17(重点覆盖,JDK 8 可提及但不要求)
- GC 类型:G1(主力)+ ZGC(对比),CMS 可作背景提及
- 场景约束:容器化部署(K8s Pod,堆内存受 cgroup 限制)
交付格式
- 主文档:Markdown 格式,含代码块、表格、ASCII 流程图
- 压测脚本:1 个 Java 程序(模拟对象分配压力 + 大对象分配)+ 1 个 Shell 脚本(自动采集 jstat / jcmd 数据并生成简单图表)
- Checklist:独立 Markdown 文件,GC 调优检查点清单
文档建议结构
- GC 基础心智模型(用打比方的方式讲清 Young/Old/Metaspace 的关系)
- 诊断工具箱(jstat / jcmd / JFR / async-profiler / GC log 解读)
- G1 调优参数详解(≥10 个关键参数,每个说明"什么时候动、动了什么效果")
- ZGC 调优要点与 G1 对比
- 3 个线上案例复盘(每个含:现象 → 定位过程 → 根因 → 修复方案 → 效果数据)
- 容器环境特殊注意事项(-XX:MaxRAMPercentage、cgroup 感知)
- GC 调优 Checklist(P0/P1/P2 分级)
任务需求
验收标准:1. 主文档正文 ≥3000 字(不含代码块),结构清晰,含 ≥5 个可复现的诊断命令(jstat / jcmd / JFR 命令等),每个命令附示例输出片段
2. 覆盖 G1 和 ZGC 两种 GC,G1 关键调优参数说明 ≥10 个(每个参数含:默认值、推荐值、适用场景、副作用)
3. 含 ≥3 个脱敏线上案例复盘,每个案例必须包含完整链路:现象描述(监控截图描述)→ 定位过程(命令+输出)→ 根因分析 → 修复方案(具体参数/代码变更)→ 效果数据(调优前后 P99 延迟对比)
4. 含 1 个可运行的 Java 压测程序(≥50 行,模拟可控的对象分配速率)+ 1 个 Shell 诊断脚本(≥30 行,能自动采集 jstat -gcutil 数据并输出简易趋势)
5. 含 1 份 GC 调优 Checklist,≥15 项检查点,按 P0(必须检查)/ P1(建议检查)/ P2(优化项)三级分类
6. 所有代码示例在 JDK 11 和 JDK 17 下均可运行,不依赖第三方库(JFR 用 jcmd 触发即可)
公开讨论
作者
评论正文
暂无讨论。