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。修改后再次运行,泄漏消失。

内存泄漏往往发生在细节处,善用工具能事半功倍。

类似文章