Android内存检测工具
-
AndroidProfiler (Androidstudio自带内存检测工具)
-
MAT (Eclipse 中的内存检测工具),下载地址: http://www.eclipse.org/mat/downloads.php
-
LeakCanary (开源内嵌APP型内存检测工具) ,官网地址:https://www.liaohuqiu.net/cn/posts/leak-canary-read-me/
AndroidProfiler工具入口
-
View->ToolsWindow->AndroidProfiler
内存分析实战
由于公司项目,经常被系统干掉,所以看了下日志基本上都是因为内存占用过大引起(长时间出于后台运行),所以怀疑程序可能存在内存泄漏,故dump内存快照,放至AndroidProfiler中进行分析,查到UiWidget类中_attrs(Map<String,String>)对象中的value包含了DefaultElement对象的引用。但实际_attrs对象的value实际上是String类型,后经过排查发现UiState中的_attrs是由UiautomationParser对象创建而成,且其中的value直接引用了DefaultElement中的attributeValue属性,所以导致此对象存在了内存泄漏。故在引用DefaultElement对象中重新初始化一个String对象即可修复该问题。
图1(内存快照分析图)
图2(部分实现代码)
其他内存实战介绍
https://blog.csdn.net/wanghao200906/article/details/79305126