Android MAT讲解

Android MAT (Memory Analyzer tool)讲解:

android的内存优化是一个老生常谈的问题,也是一个高级android工程师的必备素质与技能,最近了解并实践了android内存分析工具MAT,这是一款eclipse开发的工具,可以帮助程序员们快速定位android程序中常见的内存泄漏、内存抖动、oom等问题,下面我来介绍一下用法:
首先我们打开android studio的profile工具,开启性能监控。点到memory选项。
在这里插入图片描述
可以看到,当我们打开页面之后,会有一个内存上升的过程,然后又下降,这是正常的(新打开activity会分配内存),
然后点击 dump java heap,会下载一个heap dump文件(改文件记载一段时间内系统的内存情况,包括内存泄漏)
在这里插入图片描述
点击左侧的heap dump文件下载到自己的路径下,
在这里插入图片描述
这是我们就获取hprofs文件,然后用mat打开,此时会报错,注意,这是正常的,因为现在的hprofs文件格式还有些问题,我们还需要借助另外一个工具,
打开我们的android SDK 目录,然后打开platform-tools 文件夹可以看到一个hprof-conv.exe程序
在这里插入图片描述
这个程序是专门用来做hprof文件格式转换的,然后在此路径下打开命令行,用命令进行格式转换
在这里插入图片描述
可以看到,我们得到了最终的6.hprof文件
然后用我们的MAT 工具打开
在这里插入图片描述
选择file ---->open heap dump,定位到刚才的6.hprof文件,
在这里插入图片描述
打开之后可以看到内存占用情况,此时可能会看不懂,不要紧,我们点击下方的histogram
在这里插入图片描述
会得到这样一个视图,在上方搜索你要确认的内存泄露的类,比如SpalshActivity,splashActivty应该是进入应用程序主界面后就销毁,不再占用内存,我们实际观察一下是不是这样的。
在这里插入图片描述

会看到搜索之后,有下面几个是和splashAcivity相关的引用,
然后我们需要做一个筛选,右键点击然后选择merge shortest paths to gc root ,然后选择 exphandom/ wek / sift etc reference,选项,(这步操作的目的是排除软弱虚引用,因为我们知道内存泄漏的问题都是由强引用导致的)排除完成的选项就是我们要进行处理的地方。
在这里插入图片描述

可以看到,只有一个强引用在占用,是由于一个第三方库的用法导致的,
到这,我们就能确定我们的内存泄漏发生的位置,进而进行处理。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值