一、引用沒釋放造成的記憶體洩露
1.註冊沒有取消造成的記憶體洩露
2.集合容器物件沒有清理造成的記憶體洩露,僅僅是顯示的賦為了null
3.不要保留對context----activity長時間的引用,對activity的引用,一定要確保擁有和activity一樣的生命週期
4.如果你不想控制內部類的生命週期,應該避免在activity中使用非靜態的內部類,而應該是靜態的內部類
二、資源物件沒有關閉造成的記憶體洩露
1.cursor 未及時關閉
2.網路連線、io流沒有及時關閉
3.handlerthread 沒有quit
三、一些不良**造成的記憶體壓力
1、bitmap物件,使用完成後沒有呼叫recycle()方法,告訴gc優先**
2、盡量採用stringbuff而不是string,string物件在程序處理時是新建乙個物件。
3、threadlocal使用不當,如果我們粗暴的把threadlocal設定null,而不呼叫renmove方法或者set(null)。那麼就可能造成threadlocal繫結的物件長期也不能夠**,因而產生洩露
4.adapter getview方法未使用contantview快取機制
5.webview 物件沒有銷毀
6.typedarray recycle
7.gridview的濫用,gridview和listview的實現方式一樣,gridview的view不是及時建立,而全部儲存在記憶體中,比如gridview有100項,雖然我們只能看10項,但是其實整個100項都是在記憶體中
8.new message的洩露,盡量採用message.obtain();
9.android 直到4.1.3 之前的版本,通知欄api 都存在記憶體洩露bug,反覆呼叫 notificationmanager.notify 方法會造成手機宕機重啟。繞過此bug 的方法是每次呼叫notify 時都必須 new 乙個新的remoteviews。
Android記憶體洩露
android應用記憶體洩漏的的原因有以下幾個 1查詢資料庫後沒有關閉游標cursor 2 構造adapter時,沒有使用 convertview 重用 3 bitmap物件不在使用時呼叫recycle 釋放記憶體 4 物件被生命週期長的物件引用,如activity被靜態集合引用導致activity...
android 記憶體洩露
記憶體洩露情況 1 使用單例導致記憶體洩露 public class singleton public static singleton getsingleton context context return singleton 原因 靜態的單例使它的生命週期與應用的生命週期一樣長,context一...
Android記憶體洩露利器(RSS記憶體統計篇)
前言 rss resident set size 表示實際使用物理記憶體 包含共享庫占用的記憶體 因為它包含了共享記憶體,所以他的意義不及pss。所以現在檢視記憶體使用情況一般參照pss。因此現在一般不使用getprocessstate.bat,而是使用getmemorystate.bat andr...