LeakCanary是檢測App記憶體泄露的工具, 記憶體泄露是Android開發中常見的問題, 使用程式的穩定性下降. LeakCanary 的機制如下: RefWatcher.watch() 會以監控對象來創建一個 KeyedWeakReference 弱引用對象 在 AndroidWatchExe ...
LeakCanary是檢測App記憶體泄露的工具, 記憶體泄露是Android開發中常見的問題, 使用程式的穩定性下降.
LeakCanary 的機制如下:
RefWatcher.watch()
會以監控對象來創建一個KeyedWeakReference
弱引用對象- 在
AndroidWatchExecutor
的後臺線程里,來檢查弱引用已經被清除了,如果沒被清除,則執行一次 GC - 如果弱引用對象仍然沒有被清除,說明記憶體泄漏了,系統就導出 hprof 文件,保存在 app 的文件系統目錄下
HeapAnalyzerService
啟動一個單獨的進程,使用HeapAnalyzer
來分析 hprof 文件。它使用另外一個開源庫 HAHA。HeapAnalyzer
通過查找KeyedWeakReference
弱引用對象來查找內在泄漏HeapAnalyzer
計算KeyedWeakReference
所引用對象的最短強引用路徑,來分析記憶體泄漏,並且構建出對象引用鏈出來。- 記憶體泄漏信息送回給
DisplayLeakService
,它是運行在 app 進程里的一個服務。然後在設備通知欄顯示記憶體泄漏信息。