admin 管理员组

文章数量: 887186

下载与配置

MAT下载地址:

Eclipse Memory Analyzer Open Source Project | The Eclipse Foundation

JAVA 11下载地址:

Java Downloads | Oracle

由于最新版的MAT还需要JAVA 11,所以还需要配置JAVA 11的环境。

JAVA 11环境配置:

Java Downloads | Oracle

 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。

 遇到的小问题:

https://stackoverflow/questions/66092895/eclipse-incompatible-jvm-version-1-8-0-281-of-the-jvm-is-not-suitable-for-this

-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