使用LeakCanary输出Leak Trace到本地文件

修改LeakCanary

正常情况下LeakCanary是显示Leak Trace到一个Activity的界面上,这样有时候并不方便开发人员对问题的追踪和分析,简单修改后,可以使之输入信息到本地文件.

修改后的LeakCanary及Demo源码下载

下载
提取码 wkmBfRk5

LeakCanary基本原理

关于LeakCanary网上资料很多,这里也简单总结一下吧.

主要类如下

使用LeakCanary输出Leak Trace到本地文件_第1张图片

使用LeakCanary输出Leak Trace到本地文件_第2张图片

LeakCanary是调用入口,入口主要完成两个初始化操作,一个是创建RefWatcher
对象, RefWatcher创建并返回后,可以对其进行相关设置, RefWatcher是整个LeakCanary的引擎. 另一个是注册触发进行内存泄漏分析操作的回调, 回调由ActivityRefWatcher完成, 主要是监听Application.ActivityLifecycleCallbacks的onActivityDestroyed.
Activity如果在GC后没有被释放掉, 说明存在泄漏.
如果发现内存泄漏, HeapDumper负责产生Java Heap内存镜像文件, 通过HeapDump.Listener
交给HeapAnalyzerService进行分析. 通过另一个开源SDK com.squareup.haha由内存镜像分析出Leak Trace. Leak Trace交给DisplayLeakService进行显示.

你可能感兴趣的:(使用LeakCanary输出Leak Trace到本地文件)