參考文章
工作機制
refwatcher.watch() 建立乙個 keyedweakreference 到要被監控的物件。
然後在後台執行緒檢查引用是否被清除,如果沒有,呼叫gc。
在另外乙個程序中的 heapanalyzerservice 有乙個 heapanalyzer 使用haha 解析這個檔案。
得益於唯一的 reference key, heapanalyzer 找到 keyedweakreference,定位記憶體洩露。
heapanalyzer 計算 到 gc roots 的最短強引用路徑,並確定是否是洩露。如果是的話,建立導致洩露的引用鏈。
debugcompile 'com.squareup.leakcanary:leakcanary-android:1.3'releasecompile 'com.squareup.leakcanary:leakcanary-android-no-op:1.3'
public
class
extends
private refwatcher mrefwatcher;
@override
public
void
oncreate()
}
public
class singleinstance
public
static singleinstance getinstance(context context)
return sinstance;
}}
singleinstance.getinstance(this);
public
class singleinstance
public
static singleinstance getinstance(context context)
return sinstance;
}}
public
abstract
class
basefragment
extends
fragment
}
android記憶體優化
1 使用option進行壓縮。public static bitmap createimagethumbnail string filepath catch exception e return bitmap public static int computesamplesize bitmapfac...
android記憶體優化
android因其系統的特殊性,安裝的軟體預設都安裝到記憶體中,所以隨著使用者安裝的軟體越來越多,可供執行的程式使用的記憶體越來越小,這就要求我們在開發android程式時,盡可能的少占用記憶體。根據我個人的開發經驗總結了如下幾點優化記憶體的方法 建立或其他方式獲得的物件如不再使用,則主動將其置為n...
Android效能優化 記憶體優化
記憶體優化 下面介紹一下常用的一些記憶體優化的方法 從慕課網學來的 資料結果優化 1,如果經常使用字串拼接的話,要用stringbuilder,避免直接使用使用 的方式 2,使用arraymap,sparsearray代替hashmap 3,避免記憶體抖動的情況 物件復用 1,復用系統自帶資源 2,...