Android 内存泄漏排查实战——LeakCanary 使用记
摘要: 介绍如何使用 Square 开源库 LeakCanary 检测并修复常见的 Android 内存泄漏问题。
开发测试阶段,内存管理至关重要。上周我在测试一个包含大量图片的 Activity 时,感觉滑动有些卡顿,于是引入了 LeakCanary。
集成方式
在 build.gradle 中添加依赖:
gradlegradledependencies {
debugImplementation 'com.squareup.leakcanary:leakcanary-android:2.12'
}
无需代码初始化,LeakCanary 会自动运行。
发现问题
运行 App 后,当我反复进出某个 Activity 再返回桌面时,手机顶部弹出了 “LeakCanary” 的通知。日志显示:ActivityInstance leaked。原因是我在一个单例的 ToastUtils中持有了当前 Activity 的 Context,导致 Activity 无法被 GC 回收。
解决方案
将 Context 改为 Application Context。修改后再次运行,泄漏消失。
内存泄漏往往发生在细节处,善用工具能事半功倍。