快过年啦~最近两个月一直在忙,没日没夜的敲代码,想着一定要在年前更新一篇。 今天介绍一下使用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中输入你要检测的类的类名进行筛选。
然后就可以根据提示查看是否有内存泄露了。
新闻热点
疑难解答