Android內存泄露檢測工具LeakCanary

1、爲什麼需要對內存泄露進行檢測

如果出現了過多的內存泄露那就會出現crash,影響用戶的體驗。

2、LeakCanary的優點

  • 針對Android Activity組件完全自動化的內存泄漏檢查。
  • 可定製一些行爲(dump文件和leaktrace對象的數量、自定義例外、分析結果的自定義處理等)。
  • 集成到自己工程並使用的成本很低。
  • 友好的界面展示和通知。

3、LeakCanary的原理

  1. RefWatcher.watch() 創建一個 KeyedWeakReference 到要被監控的對象。
  2. 然後在後臺線程檢查引用是否被清除,如果沒有,調用GC。
  3. 如果引用還是未被清除,把 heap 內存 dump 到 APP 對應的文件系統中的一個 .hprof 文件中。
  4. 在另外一個進程中的 HeapAnalyzerService 有一個 HeapAnalyzer 使用HAHA 解析這個文件。
  5. 得益於唯一的 reference key, HeapAnalyzer 找到 KeyedWeakReference,定位內存泄漏。
  6. HeapAnalyzer 計算 到 GC roots 的最短強引用路徑,並確定是否是泄漏。如果是的話,建立導致泄漏的引用鏈。
  7. 引用鏈傳遞到 APP 進程中的 DisplayLeakService, 並以通知的形式展示出來。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章