AndroidStudio 的Profiler+Mat检测内存泄漏

什么是内存泄漏

申请了一块内存空间,但是一直没有释放。如果不断的申请还会引起内存溢出(OOM)

什么是内存抖动

频繁的GC操作,如果垃圾回收的速度没有生成的快,也会引起OOM

如何检测?

我使用的是Profiler+Mat,前提是必须要ADB调试

MAT工具下载地址 (https://www.eclipse.org/mat/)

运行完Profiler会出现

点击MEMORY部分

点击下载 开始记录

生成

右键Heap Dump导出文件

然后将该文件通过sdk里的hprof-conv.exe转一下文件

注意:adb调试是在你的hprof-conv的目录下 将你生成的hprof文件转一下文件  目录就是生成temp.hprof文件以及生成mat需要的文件目录(任意目录)

打开Mat  点击MemoryAnalyzer.exe

点击File 

之后点击Open Heap Dump...  选择生成的mat可以打开的memory.hprof文件

点击finish

点击标记

在该位置输入(Fragment|Activity 来排查你的Fragment|Activity的泄漏位置)

右键选择一个点击

这个表示GC Roots 所持有的所有的引用

也可以点击Merge Shortest Paths to GC Roots  点击 exclude all phantom/weak/soft etc.references 这个意思是排除软弱引用

查看强引用

之后就可以查看当前的页面持有什么强引用了

 

如何处理内存泄漏

一个图片就明白了

把当前持有GC root 与下一个持有的断开GC就可以释放当前内存

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

万子开发

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值