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需要的文件目录(任意目录)

输入下面的命令:

hprof-conv D:\MemoryAnalyse\memory-20210219T000227.hprof D:\MemoryAnalyse\memory.hprof

打开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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值