標籤:targe log app clip alt 表徵圖 資料 update 操作
在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
from:http://blog.csdn.net/yehui928186846/article/details/51387079
【轉】android IDE——通過DDMS查看app運行時所佔記憶體情況