Android MAT的使用
Posted 且听真言
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android MAT的使用相关的知识,希望对你有一定的参考价值。
下载与配置
MAT下载地址:
Eclipse Memory Analyzer Open Source Project | The Eclipse Foundation
JAVA 11下载地址:
由于最新版的MAT还需要JAVA 11,所以还需要配置JAVA 11的环境。
JAVA 11环境配置:
Java 8 和Java 11都有的情况下,把Java 11放到Java 8前面,这样Java环境才是11。最后Java -version 验证一下。
hprof文件获取与格式转换
Hprof文件获取
点击红色箭头按钮,便可以获取到Hprof文件。
Hprof格式转换
由于从android studio中保存堆栈信息,由于Android studio的hprof文件格式与mat的格式不兼容,所以需要使用 安卓SDK 中的 hprof-conv.exe工具转换一下。
hprof-conv 工具使用
hprof-conv -z srcFile dstFile
-
-z 命令选项 : 表示排除非 APP 内存的堆 , 如 Zygote 内存等 ;
-
srcFile 参数 : -z 后第一个参数是 源文件 , 即从 Android Studio 中保存的内存快照文件 , memory-20221221T195738.hprof
-
dstFile 参数 : 后面的第二个参数是目标文件 , 即将转换后的结果保存到该文件中 ;
例如: hprof-conv -z /d/工作文档/内存优化/memory-20221221T195738.hprof mat.hprof。memory-20221221T195738.hprof 也就是你从Android studio获取的Hprof文件了。
MAT使用
打开MAT。
遇到的小问题:
-startup
plugins/org.eclipse.equinox.launcher_1.6.400.v20210924-0641.jar
--launcher.library
plugins/org.eclipse.equinox.launcher.win32.win32.x86_64_1.2.400.v20211117-0650
-vm
C:\\Program Files\\Java\\jdk-11.0.17\\bin\\javaw.exe
-vmargs
-Dosgi.requiredJavaVersion=11
-Xmx1024m
选择 Leak Suspects Report。
点击 Histogram。
搜索有泄露问题的文件
如下图操作。排除虚、弱、软引用,因为这些基本不会发生泄露。
点击后如下图,发现和Android Studio Profiler的结果很像。
MAT其他功能补充
饼图分析
饼图里列出了两个会泄露的类
以上是关于Android MAT的使用的主要内容,如果未能解决你的问题,请参考以下文章