Android 配合Mat工具监听查找内存泄漏的操作方法

 更新时间:2022年05月13日 09:25:11   作者:一只想颠覆世界的蚂蚁  
这篇文章主要介绍了Android 配合Mat工具监听查找内存泄漏问题,使用Android Studio Profiler查看内存的操作,本文通过图文实例相结合给大家介绍的非常详细,需要的朋友可以参考下

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.hprof

3、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内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • React Native与Android 原生通信的方法

    React Native与Android 原生通信的方法

    本篇文章主要介绍了React Native与Android 原生通信的方法,主要是分享原生模块与JS传递数据的几种方式,非常具有实用价值,需要的朋友可以参考下
    2018-05-05
  • Retrofit和OkHttp如何实现Android网络缓存

    Retrofit和OkHttp如何实现Android网络缓存

    这篇文章主要介绍了Retrofit和OkHttp如何实现Android网络缓存,帮助大家更好的理解和学习Android开发,感兴趣的朋友可以了解下
    2021-02-02
  • Android实现动态体温计

    Android实现动态体温计

    这篇文章主要为大家详细介绍了Android实现动态体温计,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-06-06
  • Android 进度条按钮ProgressButton的实现代码

    Android 进度条按钮ProgressButton的实现代码

    这篇文章主要介绍了Android 进度条按钮实现(ProgressButton)代码,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值 ,需要的朋友可以参考下
    2018-10-10
  • flutter PageView实现左右滑动切换视图

    flutter PageView实现左右滑动切换视图

    这篇文章主要为大家详细介绍了flutter PageView实现左右滑动切换视图,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-07-07
  • android开发基础教程—打电话发短信

    android开发基础教程—打电话发短信

    打电话发短信的功能已经离不开我们的生活了,记下来介绍打电话发短信的具体实现代码,感兴趣的朋友可以了解下
    2013-01-01
  • Android 轻松获取CPU型号的方法

    Android 轻松获取CPU型号的方法

    这篇文章主要介绍了在Android设备上获取CPU型号是一项常见的任务的相关资料,需要的朋友可以参考下
    2023-10-10
  • Android编程实现将tab选项卡放在屏幕底部的方法

    Android编程实现将tab选项卡放在屏幕底部的方法

    这篇文章主要介绍了Android编程实现将tab选项卡放在屏幕底部的方法,涉及Android界面布局、tab设置及权限控制相关操作技巧,需要的朋友可以参考下
    2017-03-03
  • Android自定义ViewGroup实现弹性滑动效果

    Android自定义ViewGroup实现弹性滑动效果

    这篇文章主要为大家详细介绍了Android自定义ViewGroup实现弹性滑动效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-12-12
  • Flutter+Metal实现图像处理详细流程

    Flutter+Metal实现图像处理详细流程

    Flutter使用CVPixelBuffer和iOS交互,我们可以直接使用CVPixelBuffer创建MTLTexture,然后将MTLTexture设置为渲染目标,这篇文章主要介绍了Flutter+Metal实现图像处理,需要的朋友可以参考下
    2022-06-06

最新评论