當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 目錄中,運行不方便,考慮將其移動到應用程序中。打開控制台,輸入命令
Downloads % cd /Applications
/Applications %
/Applications %sudo mv /Users/<username>/Downloads/mat.app .
輸入管理員密碼后移動成功。進入啟動台
就能看到應用mat了。
如果直接點擊mat應用,會啟動失敗,提示我們去查看日志文件
.eclipse/1005214708_macosx_cocoa_x86_64/configuration/1578452593396.log,其主要內容為
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目錄,比如我直接創建在其安裝目錄下,完整路徑為
/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,啟動成功。