Android上一般使用LeakCanary监控Activity的内存泄漏
- 添加LeakCanary依赖
dependencies {
debugImplementation 'com.squareup.leakcanary:leakcanary-android:1.6.3'
releaseImplementation 'com.squareup.leakcanary:leakcanary-android-no-op:1.6.3'
}
这里接入了两个库,分别用于debug模式与release模式。也就是说编译release包的时候不需要切换代码就可以去除LeakCanary的依赖了,非常方便。
- 在代码中进行初始化
if (!LeakCanary.isInAnalyzerProcess(context)) {
LeakCanary.install(context);
}
接入后,桌面上会生成一个Leaks的图标,像下面这样。
image.png
当发生内存泄漏的时候,会收到通知消息。分析Activity的引用栈即可查到内存泄漏原因。
LeakCanary通过持有Activity的弱引用来监控Activity是否被及时回收。
LeakCanary只能监控到Activity的泄漏情况,而不能监控到其他内存的泄漏情况,比如大图片之类的。这类的内存泄漏问题可以通过Android Studio自带的Profiler工具进行监控排查。
网友评论