Mac M1 爬坑指南 | Mac M1芯片安装 MAT

8,820 阅读3分钟

MAT 是 Eclipse出品的一款 Java(堆)内存分析器 。我们可以把使用 Android Profiler 的内存性能分析器捕获的 堆转储 文件,导入MAT中进行详细的应用内存分析。

由于Mac M1系列芯片(M1/M1 Pro/M1 Max) 使用的是 aarch64 架构,因此在安装MAT时要尤其 注意依赖的JDK的版本,避免因版本不适配而导致应用不能正常工作。

我的安装环境如下:

  • Mac型号:MacBook Pro Apple M1 Pro
  • 操作系统:macOS Monterey 12.0.1

下面介绍下安装流程,以及注意事项。

一、下载MAT

登录 Memory Analyzer 官网,可以看到,目前最新的Mac版本 还未支持aarch64架构 , 不过苹果内置有 Rosetta 转译程序, 可以支持运行x86_64架构的应用。

选择 Mac OSX(Mac/Cocoa/x86_64) 版本下载安装文件。

二、安装MAT

下载好MAT的安装文件后,双击按提示安装即可。

安装完成后,如果你能正常打开应用,那恭喜你,很幸运,说明你的配置环境一切正常😂,你可以开始愉快的使用MAT进行内存分析了。

如果你像我一样,打开时出现了错误提示,不要慌,大概率是JDK环境出了问题,我们来排查排查。

三、配置Java环境

先给大家上结论:最新的MAT版本软件,要求在 Java 11及以上版本 运行,而且由于Mac目前只有x86_64版本,你还需要确保MAT使用的JDK是 x86_64版本

1. 检查Java版本

在终端中输入 /usr/libexec/java_home -V,查看本地安装的Java版本。

可以看到,我的电脑安装了3个Java版本,分别是 17.0.1 (arm64) , 11.0.2 (x86_64) 以及 1.0.8_292 (x86_64)

, 目前默认使用的是 /Library/Java/JavaVirtualMachines/jdk-17.0.1.jdk/Contents/Home,也就是 17.0.1 (arm64) 版本,和我上面打开MAT时的错误提示,也是对应得上的。

2. 指定Java版本

很显然,我默认使用的是 arm64 版本的Java,而MAT目前仅支持x86_64,所以出现了错误。

现在,我只需要将MAT使用的Java版本更改为x86_64的即可。

2.1 下载Java版本


如果你本机并没有安装 Java 11(x86_64)及以上的版本 的JDK,可登录 JDK网站 下载符合条件的Mac_O 版本,可以看到针对于Mac版本,从 17 GA (build 17+35) 才开始区分 aarch64 和 x86 架构。

我下载的是 11.0.2 (build 11.0.2+9) 版本。

2.2 配置Java版本


修改Java版本有两种方式。

第一种,你可以通过配置 JAVA_HOME 环境变量,指定系统默认使用的Java版本,全局生效。

第二种,你可以修改MAT应用的配置文件,为MAT指定其使用的Java版本。

我建议选择第 二种方式,这里不至于为了某个应用,而变更了整个系统默认配置,避免导致其他使用Java环境的应用出错。

2.3 修改MAT配置


  1. 访达 -> 应用程序 找到 mat ,右键 -> 显示包内容 -> Contents -> Info.plist。

  1. 打开 Info.plist,找到下面注释的位置。添加脚本,指定MAT使用的Java路径。
      <!-- To use a specific Java version (instead of the default) uncomment the following option and 
				edit it to add a VM. Installed VMs can be found via $/usr/libexec/java_home -V
				<string>-vm</string><string>/Library/Java/JavaVirtualMachines/jdk-11.jdk/Contents/Home/bin/java</string>
			-->
			<!-- 注意路径一定要写全,最终是定位到了java目录 -->
      <string>-vm</string>
      <string>/Users/seven/Library/Java/JavaVirtualMachines/jdk-11.0.2/Contents/Home/bin/java</string>
  1. 保存配置修改,重启MAT。导入文件,开始分析吧!