安卓内存泄露排查LeakCanary

复制代码
在 Android 开发中,内存泄漏是非常常见但又隐蔽的问题,严重时会导致 应用卡顿、OOM(内存溢出)或崩溃。 

✅ 一、LeakCanary(推荐,快速集成,自动分析)
🧪 LeakCanary 是什么?
LeakCanary 是 Square 出品的一个 Android 内存泄漏检测库,当你的 app 出现内存泄漏时,它会:

自动监听 Activity/Fragment 的销毁情况

如果内存泄漏,它会 弹出通知 + 详细引用链

🛠️ 集成方式(以 Java 项目为例)
在 build.gradle 中添加依赖:

dependencies {
    debugImplementation 'com.squareup.leakcanary:leakcanary-android:2.12'
}
无需其他初始化,LeakCanary 会自动开始监控。

🧩 如何使用 LeakCanary 排查泄漏?
运行 App,进入可能内存泄漏的界面,然后退出该界面。

如果泄漏发生,会自动弹出如下通知:

Memory Leak Detected
com.xxx.MyActivity has leaked
点击通知,查看泄漏路径:

com.xxx.MyActivity → mContext → this$0 → mHandler → MessageQueue
按照引用链查看是哪个字段导致 Activity 没有被回收,例如:

静态变量持有 Activity

Handler 没有移除消息

自定义线程、定时器、RxJava 没有释放

🔍 常见内存泄漏原因
场景	                      原因
Handler	             未 removeCallbacksAndMessages(null)
静态变量	             持有 Context/Activity
单例	                 单例中持有非 Application 的 Context
资源未释放	         Bitmap、Camera、MediaPlayer
自定义 View	         监听器未解绑
RxJava	             未正确 dispose()
相关推荐
恋猫de小郭1 天前
Android 上为什么主题字体对 Flutter 不生效,对 Compose 生效?Flutter 中文字体问题修复
android·前端·flutter
三少爷的鞋1 天前
不要让调用方承担你本该承担的复杂度 —— Android Data 层设计原则
android
李李李勃谦1 天前
Flutter 框架跨平台鸿蒙开发 - 创意灵感收集
android·flutter·harmonyos
fengci.1 天前
ctfshow其他(web396-web407)
android
JJay.1 天前
Android 17 大屏适配变化解
android
TE-茶叶蛋1 天前
结合登录页-PHP基础知识点解析
android·开发语言·php
alexhilton1 天前
Jetpack Compose元球边缘效果
android·kotlin·android jetpack
y小花1 天前
安卓音频子系统之USBAlsaManager
android·音视频
KevinCyao1 天前
安卓android视频短信接口怎么集成?AndroidStudio视频短信开发指南
android