記憶體不足、GC異常等情況下,我們就會懷疑有記憶體洩露。監測方法如下
1 生成二進制hprof檔案
查找項目pid,然後通過如下指令生成hprof檔案
jmap -dump:format=b,file=filename.hprof pid
注:沒加字尾名,後面檔案重名了。
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLiAzNvwVZ2x2bzNXak9CX90TQNNkRrFlQKBTSvwFbslmZvwFMwQzLcVmepNHdu9mZvwFVywUNMZTY18CX052bm9CX90zdiNnRHFGcG1mYw50MMBjVtJWd0ckW65UbM5WOHJWa5kHT20ESjBjUIF2LcRHelR3LcJzLctmch1mclRXY39zN3QTN0ADM1EDOygDM4EDMy8CX0Vmbu4GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.jpg)
2 eclipse安裝記憶體分析工具MAT(Memory Analyzer Tool)
Mat插件的位址:http://download.eclipse.org/mat/1.6/update-site/
3 MAT分析檔案
eclipse轉到memory analysis界面
actons中Histogram列出每個類的執行個體數,Dominator Tree列出最大存活對象,Top Consumers列印出最高消耗對象,Leak Suspects包括洩露嫌疑人和系統概述
Top Components熱門元件:列出大于總堆的1%的元件的報告。
Shallow Size 對象自身占用的記憶體大小,不包括它引用的對象。
Retained Size 目前對象大小+目前對象可直接或間接引用到的對象的大小總和。GC後釋放記憶體。
4更多
細化名詞:http://inter12.iteye.com/blog/1407492
細節處理:https://blog.csdn.net/alli0968/article/details/52460008