【JAVA架构师成长之路】【JVM实战】第2集:生产环境内存飙高排查实战
课程标题:生产环境内存飙高排查实战——从堆转储到代码修复的15分钟指南
目标:掌握内存泄漏与OOM问题的系统性排查方法,快速定位代码或配置缺陷
0-1分钟:问题引入与核心现象
线上服务内存持续增长,触发频繁Full GC甚至OOM(OutOfMemoryError),导致服务崩溃。常见诱因:内存泄漏、大对象分配、缓存失控、元空间溢出。需通过工具链快速定位根因。
1-2分钟:第一步——确认内存消耗趋势
- 全局监控:
top -c # 查看进程RES(物理内存)与%MEM free -m # 系统整体内存使用
- JVM内存分布:
jstat -gcutil <PID> 1000 5 # 观察各分区占用(Eden/Old/Metaspace)
若Old区(OU)持续增长至100%,可能内存泄漏;Metaspace满则类加载过多。
2-4分钟:第二步——生成堆转储文件(Heap Dump)
- 主动触发:
jmap -dump:live,format=b,file=heap.hprof <PID> # 安全点触发,可能引起STW
- OOM时自动生成: