課程標題:生產環境內存飆高排查實戰——從堆轉儲到代碼修復的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時自動生成: