使用MAT 分析內存泄漏實戰


在分析前可以閱讀下這篇文章,很多內容就都知道了https://www.jianshu.com/p/738b4f3bc44b,下面我來分析上一篇文章內存泄漏的為問題

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

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

 

 

 2.問題顯示,查看詳情

 

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

 

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

 

 

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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM