1. 程式人生 > >android IDE——通過DDMS檢視app執行時所佔記憶體情況

android IDE——通過DDMS檢視app執行時所佔記憶體情況

在android記憶體優化方面,我們不可能做到沒有大記憶體的佔用情況。

所以有時候要清楚我們的app到底佔用了多少記憶體,哪一步操作佔用了多少的記憶體。

這時候,android的ddms中提供了一個工具,是可是實時檢視app執行時的記憶體使用情況。

下面我以android studio為例。其實eclipse adt 是一樣的。

這裡寫圖片描述

eclipse中也是這個圖示。

這裡寫圖片描述

如何使用,圖中已經表明的很清楚了。
1,找到當前執行的手機
2,點選和你app相同包名的程序
3,點選update Heap
4,切換到Heap檢視上點選Cause GC按鈕
5,根據自己需要點選app程序
6,圖中的柱狀圖就是你的app的記憶體使用情況了

我們可以根據哪一步操作對記憶體的使用情況而鎖定應該優化的地方。

注意事項:
1,Cause GC按鈕點選一次就相當於虛擬機器請求了一次gc操作
2,當記憶體資訊顯示後就不需要再點選Cause GC按鈕了。Heap檢視會定時重新整理,對應的操作過程可以看出記憶體變化。

如何知道程式記憶體洩漏?
Heap檢視中有一行資料是叫data object,即資料物件。它是我們app中大量存在的類型別的物件。
在data object中有一列 Total Size ,它的值就是當前程序中所有java物件的記憶體總量。
一般情況下,這個值決定是否記憶體洩漏。

如何判斷?
1,不斷的操作你的app,同時觀察Total Size的值。
2,Total Size的值一般會穩定在一個正常範圍內。
3,當我們在不斷操作app的時候,記憶體會有一個先增加(不斷的生成物件),後下降(物件被回收)。如果程式的程式碼處理良好,那麼記憶體佔用量會有一個明顯的回落,並且穩定在一個正常水平。
4,如果你的程式碼沒有很好的釋放記憶體。那麼,記憶體佔用量就沒有一個明顯的回落,並且會越來越高,最終達到上限程式被kill掉。

如何處理?
當我們發現記憶體洩漏了,我們需要怎麼做?
一般情況下,我們對自己寫的程式碼瞭如指掌,可以根據邏輯去判斷,當前操作是哪裡造成了記憶體洩漏。然後分析,修改。

但是,如果你在修改別人的程式碼的時候,這樣會把你逼瘋的。這裡介紹一個工具:記憶體分析工具MAT(Memory Analyzer Tool),在eclipse中能夠當作外掛使用。android studio目前我還沒試過。不過有客戶端。
下載地址和使用詳情見:www.eclipse.org/mat