置顶JVM 性能调优 · 系列目录


JVM 性能调优 · 系列目录 叙事框架:决策树式——你的应用适合哪种 GC / 哪些参数 总计 20 篇,已发布 5 篇,15 篇待完善 一、GC 选型 / 调优类 ✅ G1 还是 ZGC?一个线上 RT 波动的 GC 选型改造实录 ✅ CMS GC 频繁 promotion failed 排查

从 38 个删到 8 个,GC 停顿反而更稳了:JVM 参数不是越多越好


从 38 个删到 8 个,GC 停顿反而更稳了:JVM 参数不是越多越好 场景:一个 4C8G Spring Boot 微服务,启动脚本里塞了 38 个 JVM 参数。删到 8 个后,性能没差,但心里踏实多了。 路径:启动参数对比 → 参数分类(必备/白噪音/场景专用)→ 最小配置清单 → 验证标记

GC 停顿飙了 15 倍:元凶不在 JVM 在缺页中断


GC 停顿飙了 15 倍:元凶不在 JVM 在缺页中断 场景:一个 G1GC 服务的 YoungGC 耗时从 20ms 突升到 300ms+,调了所有 GC 参数都无效。根因不在 GC 日志里,在缺页中断。 路径:GC 停顿飙升 → real >> user 关键线索 → 缺页中断排查 → THP

CMS GC 频繁 promotion failed 排查


CMS GC 频繁 promotion failed 排查 场景:6GB 堆的订单服务持续 promotion failed,调大堆后次数反而翻倍。 路径:GC 日志定位 → 碎片化/并发周期跟不上的双根因判断 → CMS 参数微调方案 → 迁移 G1/ZGC 的长期路径 上篇讲了 Metaspac

Metaspace OOM:动态类加载/反射/CGLIB 是凶手


Metaspace OOM:动态类加载/反射/CGLIB 是凶手 本文是 JVM 性能调优 系列的第二篇 叙事框架:现象 → 排查过程 → 根因 → 修复 → 预防 问题现象 告警触发 某日上午刚过十点,认证服务值班群突然被告警机器人刷屏。健康检查连续失败,用户登录接口大面积报错,前端反馈大量 50

G1 还是 ZGC?一个线上 RT 波动的 GC 选型改造实录


G1 还是 ZGC?一个线上 RT 波动的 GC 选型改造实录 本文是 JVM 性能调优 系列的第一篇 叙事框架:现象 → 排查过程 → 根因 → 修复 → 预防 问题现象 某日早高峰刚过,支付网关值班群突然被告警机器人刷屏: P99 响应时间从稳定了数月的 50ms 一路飙升到 300ms+,而且