可以直接在手机端查看内存泄露的工具
公司:square
github:https://github.com/square/leakcanary
用法:
1.添加依赖
debugCompile 'com.squareup.leakcanary:leakcanary-android:1.5.4'
releaseCompile 'com.squareup.leakcanary:leakcanary-android-no-op:1.5.4'
2.在自定义Application中添加
public class ExampleApplication extends Application {
@Override public void onCreate() {
super.onCreate();
LeakCanary.install(this);
}
}
3.检测方法
我们以性能优化-内存泄露案例分析
当该应用出现内存泄露,会在手机上生成Leaks应用
点击进入查看具体的内存泄露
4.分析
静态变量static MainActivity.mBeens
引用了Arraylist,Bean.mContext
导致MainActivity泄露
5.原理
本质上还是使用命令控制生成Hprof文件分析检查内存泄露
然后发送通知
Application
-install()
LeakCanary
-androidWatcher()
RefWatcher
-new AndroidWatcherExecutor -->dumpHeap/分析
-new AndroidHeapDumper
-new ServiceHeapDumpListener