生产问题之内存泄漏

张开发
2026/5/4 21:06:02 15 分钟阅读
生产问题之内存泄漏
一、MAT 分析 Heap Dump 图文定位步骤(生产实战版)适用:拿到dump.hprof后,10 分钟定位 OOM 根源1)打开 MAT打开 Eclipse MAT(Windows/Mac 都有)File → Open Heap Dump → 选择dump.hprof弹出:Leak Suspects Report→ 勾选 Finish2)第一步:看泄漏嫌疑犯(Leak Suspects)MAT 会自动分析,直接给出Top 嫌疑对象看饼图:哪块占用最大点击Details → Accumulated Objects90% OOM 在这里直接暴露:大 List、大 Map、大缓存3)第二步:看支配树(Dominator Tree)路径:Open Dominator Tree按内存从大到小排序重点看:byte[]、char[]ArrayList、HashMap业务对象:User/Order/EventDTO线程对象、ThreadLocal右键 →Path to GC Roots → exclude weak/soft直接看到谁在持有引用,导致无法回收。4)第三步:看对象直方图(Histogram)输入类名过滤,例如:com.xxx.order.domain.Order看:Objects 数量Shallow Heap / Retained Heap数量异常巨大 → 就是泄漏点。5)第四步:定位到代码行在支配树中找到大集合 → 右键:List Objects → with outgoing references一路点开,能看到:哪个类的 static

更多文章