这篇文章主要介绍了Android 配合Mat工具监听查找内存泄漏问题,使用AndroidStudioProfiler查看内存的操作,本文通过图文实例相结合给大家介绍的非常详细,需要的朋友可以参考下
1、Android Studio Profiler查看内存
内部培训做个记录
运行我们的项目,然后一直玩APP。最后在Android Studio Profiler中选择memory。执行如下操作:

会得到如下图示。

从图中可以看出,目前存在47个泄漏情况。点击数字47 会得到app heap内存泄漏的详细类。

某一个类泄漏了17次。
右键到处hprof文件。

2、hprof文件转换
进入到Android SDK的platform-tools目录下 执行如下命令
hprof-conv memory.hprof 11.hprof3、MAT定位泄漏原因
打开mat软件,选择file 导入刚刚生成的11.hprof文件

点击

输入你需要查看的泄漏类的正则

这儿我输入activity。找到我们自己的activity,这个时候右键该类。选择Gc roots 然后exclude all phantom/weak/soft etc.references(这步操作的目的是排除软弱虚引用,因为我们知道内存泄漏的问题都是由强引用导致的)

从图中可以看出 我们项目有个lifecycleRegister类持有了activity保存在fragmentCallback中,而得不到释放。
4、回到代码排查原因
最后在代码中我看到我们的fragmentCallback一直保存数据,但是没有地方释放,在释放的位置activity.finish()即可。至此解决问题
即堆中存在不再使用的对象,但垃圾收集器无法将它们从内存中删除
到此这篇关于Android 监听查找内存泄漏 配合Mat工具的文章就介绍到这了,更多相关android内存泄漏Mat内容请搜索编程学习网以前的文章希望大家以后多多支持编程学习网!
本文标题为:Android 配合Mat工具监听查找内存泄漏的操作方法
基础教程推荐
- Android多返回栈技术 2023-04-15
- IOS应用内跳转系统设置相关界面的方法 2022-11-20
- 解决Android Studio突然不显示logcat日志的问题 2023-02-04
- Android开发使用RecyclerView添加点击事件实例详解 2023-06-15
- Flutter绘图组件之CustomPaint使用详解 2023-05-12
- iOS开发教程之XLForm的基本使用方法 2023-05-01
- android studio按钮监听的5种方法实例详解 2023-01-12
- Flutter手势密码的实现示例(附demo) 2023-04-11
- Android中的webview监听每次URL变化实例 2023-01-23
- IOS 播放系统提示音使用总结(AudioToolbox) 2023-03-01
