Android内存泄露检测(二)

1. Android内存泄露检测 ---- LeakCanary的使用

依赖库即可,重点在分析工具和分析方法:

debugImplementation'com.squareup.leakcanary:leakcanary-android:2.8.1'

分析工具:MAT 、AndroidStudioProfiler 和 自带分析工具;



这里先看一下Leaking的状态(YES、NO、UNKNOWN),NO表示没泄露、YES表示出现泄漏、UNKNOW表示可能泄漏。

具体学习资料:学习资料

2. dumpsys meminfo

首先了解下Android中最重要的四大内存指标的概念

我们主要使用USS和PSS来衡量进程的内存使用情况

dumpsys meminfo命令展示的是系统整体内存情况,内存项按进程进行分类

查看单个进程的内存信息,命令如下

adb shell dumpsys meminfo [pid | packageName]

Objects中Views、Activities、AppContexts的异常可以判断有内存泄露,比如刚退出应用,查看Activites是否为0,如果不为0,则有Activity没有销毁。

3.Android Studio Memory Profiler

 具体用法直接参考大佬的资源即可,不赘述。

android studio 中Memory Profile的用法

总结:内存问题高效分析方法

接入LeakCanary,监控所有Activity和Fragment的释放,App所有功能跑一遍,观察是否有抓到内存泄露的地方,分析引用链找到并解决问题,如此反复,直到LeakCanary检查不到内存泄露。

adb shell dumpsys meminfo命令查看退出界面后Objects的Views和Activities数目,特别是退出App后数目为否为0。

打开Android Studio Memory Profiler,反复打开关闭页面多次,点击GC,如果内存没有恢复到之前的数值,则可能发生了内存泄露。再点击Profiler的垃圾桶图标旁的heap dump按钮查看当面内存堆栈情况,按包名找到当前测试的Activity,如果存在多份实例,则很可能发生了内存泄露。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容