使用MAT 分析內存泄漏實戰

在分析前能夠閱讀下這篇文章,不少內容就都知道了https://www.jianshu.com/p/738b4f3bc44b,下面我來分析上一篇文章內存泄漏的爲問題函數

1。上一篇中已經生成了hprf的文件了,如今咱們就對他進行分析,確認電腦已經安裝了MAT工具,在MAT直接打開文件,就看到以下圖,在點擊工具

Leak Suspects 這個連接,查看內存泄漏

 

 

 2.問題顯示,查看詳情線程

 

 3.詳細信息中 這一步就很看到其實arraylist這裏的佔用的實際堆有些多,需堆,和保留堆,在連接中有解釋,blog

 

 t表示GC root到內存消耗匯集點的最短路徑,若是某個內存消耗匯集點有路徑到達GC root,則該內存消耗匯集點不會被當作垃圾被回收。也定位是arraylist,這個函數有問題,查看代碼,發現list只增,不釋放,代碼已定位內存

 

 

4.其實有最方便的一種方式,抓取兩個文件,進行對比 查看堆的大小,若是堆的某些數據持續上升,且不降低,就多是存在問題,在線程診斷中也有提出main 函數中存在內存泄漏get

相關文章
相關標籤/搜索