天天看點

android:MAT記憶體分析工具的使用

前言

之前看過這篇部落格,《​​IBM​​​​使用 Eclipse Memory Analyzer 進行堆轉儲檔案分析​​​》。是以,想使用MAT對android app的記憶體進行分析。又恰好看到這篇部落格《​​Android記憶體洩漏研究​​》,于是,我也總結一些MAT的使用。

1.在Eclipse上安裝MAT,和安裝其他插件一樣,MAT的目前位址:http://download.eclipse.org/mat/1.4/update-site/ 安裝

完成之後重新開機Eclipse即可。

2.在裝置頁面,選擇包名對應的app,如圖1.點選圖示

android:MAT記憶體分析工具的使用

,等待一會,就會出現圖2的分析結果。

android:MAT記憶體分析工具的使用

圖1

android:MAT記憶體分析工具的使用

圖2

根據分析的結果,我們可以看出app的記憶體占用情況。點選左下角action标簽頁的Histogram,就可以通過直方圖的形式

檢視各種對象的數目,以及占用的記憶體大小。

android:MAT記憶體分析工具的使用

圖 3

圖3所示的對象,最多可以顯示31個,但是我們可以根據包名和類名對其進行過濾。最最重要的時,我們可以右鍵檢視

對象被哪些對象所引用,這樣,我們就可以分析對象沒有被GC的原因,然後檢查對應的代碼。

android:MAT記憶體分析工具的使用

圖 4

android:MAT記憶體分析工具的使用

圖 5

可以看出,該Activity被引用的路徑。可以看出,該Activity雖然已經finish了,但是GifView仍然儲存了它的引用,導緻無法GC。

同樣的,我們可以先從暫用記憶體最多的對象分析,然後檢視它們的引用樹。注意:并不是所有暫用記憶體多的對象,都會

造成記憶體洩露。比如一副比較大的圖檔,當它需要顯示的時候,很顯然,它對應的byte數組應當出現在記憶體中。

繼續閱讀