当Java应用出现内存溢出的问题的时候,需要拿工具分析dump文件的。JDK自带的jvisualvm和jhat都可以使用,另外还有一个工具是 Memory Analyzer Tool ,支持独立运行和作为Eclipse插件两种方式使用。
因为已经不再使用Eclipse,所以这次准备在MacBook上装一个独立运行的版本,碰到了一点坑,mark一下。
1 下载
官网是 http://liaojunyong.spaces.live.com ,当前最新版本是 1.9.1,选择下载 Mac OSX (Mac/Cocoa/x86_64)
版。下载后解压为目录 mat.app 。
2 移动到/Applications
当前这个目录在 Downloads 目录中,运行不方便,考虑将其移动到应用程序中。打开控制台,输入命令
代码语言:javascript复制Downloads % cd /Applications
/Applications %
/Applications %sudo mv /Users/<username>/Downloads/mat.app .
输入管理员密码后移动成功。进入启动台
就能看到应用mat了。
如果直接点击mat应用,会启动失败,提示我们去查看日志文件
.eclipse/1005214708_macosx_cocoa_x86_64/configuration/1578452593396.log,其主要内容为
代码语言:javascript复制java.lang.IllegalStateException:
The platform metadata area could not be written:
/private/var/folders/_h/mmd26ldd751g7gnx6wjfghzw0000gn/T/AppTranslocation/47640E19-535C-4C8D-84DA-8D0DDA56BFD4/d/mat.app/Contents/MacOS/workspace/.metadata.
By default the platform writes its contentunder the current working directory when the platform is launched.
Use the -data parameter to specify a different content area for the platform.
提示我们需要使用参数 -data 指定一个工作空间。
3 修改配置文件
我们先创建一个 workspace目录,比如我直接创建在其安装目录下,完整路径为
代码语言:javascript复制/Applications/mat.app/Contents/MacOS/workspace
然后使用文本编辑器编辑文件 /Applications/mat.app/Contents/Info.plist
找到<array>部分,修改内容为
<array>
<!-- 指定启动使用的JVM -->
<string>-vm</string>
<string>/Library/Java/JavaVirtualMachines/jdk1.8.0_221.jdk/Contents/Home/bin/java</string>
<!-- 指定启动的工作空间 -->
<string>-data</string>
<string>/Applications/mat.app/Contents/MacOS/workspace</string>
<!-- 原有内容,不动 -->
<string>-keyring</string>
<string>~/.eclipse_keyring</string>
</array>
然后在运行mat.app,启动成功。