首页 > 学院 > 开发设计 > 正文

使用Eclipse MemoryAnalyzer tools 分析内存溢出问题

2019-11-09 15:53:51
字体:
来源:转载
供稿:网友

快过年啦~最近两个月一直在忙,没日没夜的敲代码,想着一定要在年前更新一篇。 今天介绍一下使用Eclipse MemoryAnalyzer 分析内存溢出问题,最近公司代码被测试出有卡顿问题,分析应该是OOM导致的,于是找到了这个工具,果然找到了一些模块destory之后仍被其他类引用到,无法释放。 首先,百度一下,Memory Analyzer (Eclipse MAT)是一个跨平台的开源工具,您不仅可以用它来分析内存问题,也可以用来监控整个 java 应用程序的状态和行为。通过读取应用程序运行时由 Java 运行时环境生成的转储文件快照,Memory Analyzer 使您能够分析那些调试代码可能无法发现的复杂问题。下载一下这个工具,解压后点击.exe运行,这个时候可能会报错。我暂时遇到的两个问题:一个是运行的时候发现JDK存在默认路径,解决方法就是把环境变量配置中的PATH路径下的默认路径删除即可;另一个是JDK版本不匹配,下载的MAT是64位的就需要64位的JDK才可以,解决方法重新下载一个新版本JDK重新配置一下即可。 好的,下面介绍一下使用方法: 1、生成 .hPRof文件 选择AndroidStudio中的Monitors中Memory栏上的“小车”按钮,点击,然后设备执行你想要检测的页面,进入后退出,再次点击该按钮。其实这个按钮是执行了gc回收。然后点击右边像文件似的按钮,稍微等待一会就会生成.hprof文件。

这里写图片描述

2、文件另存为 选择左侧的Captures,点开下拉加载按钮选中生成的文件,右键,选择最后一个选项将该文件保存在随便一个目录下,取个名字。

这里写图片描述

3、双击打开MAT的.exe文件运行

这里写图片描述

4、使用MAT打开.hprof文件

这里写图片描述

这里写图片描述

注意这个加载过程需要一两秒,中间无需点击默默等待就好。

这里写图片描述

选择类似于报表似的按钮,如图显示,再ClassName中输入你要检测的类的类名进行筛选。

这里写图片描述

然后就可以根据提示查看是否有内存泄露了。


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表