2023/11/20
新規作成
経緯・課題
・業務で java heap dump の仕様を調査する必要があり、memory analyzerをMacOSに導入したので備忘録として残しておきます。
前提・環境など
・MacOS Sonoma (14.1) Apple M1 Pro
・java jdk-17.0.8.1+1 (IBM OpenJ9)
参考知識
・IBM SDK, Java Technology Edition 8 - 診断ツールおよびデータ
1.二種類のMATツール
Memory Analyzer tool (MAT)は2種類利用方法があります。
・Eclipse版
Eclipseを普段から利用している場合、Eclipseにプラグインとして追加することが可能です。
・スタンドアロン版
単純にMATだけ手っ取り早く使いたい、という方はこちらがおすすめです。
1-1.Eclipse版
1-1-1. Market Placeからの導入
ここでは、Eclipse導入済みの前提で記載します。
Help > Eclipse Marketplace を選択し、Memory Analyzer x.xx.x を検索、導入します。
(図は、Memory Analyzer 1.13.0 を導入済みの場合
Eclipseを再起動すると、Help > Memory Analyzer Diagnostics... が利用可能になります。
さらに、右上のパースペクティブ選択ボタンから、Memory Analyzer のパースペクティブの利用が可能になります。
Memory Analyzer のパースペクティブに切り替えた後、以下のように "Open Heap Dump"が選択できるようになります。
1-1-2.java sdk home 設定
eclipse もしくはMATが起動できない場合、以下のようにします。
パッケージの内容を表示して、Info.plist ファイルの内容を書き換えます。
以下のように、各自の$JAVA_HOMEに応じて、JDKのパスを記載します。
参考: Not able to run Eclipse on macOS Big Sur
1-2.スタンドアロン版
1-2-1.ダウンロード
IBM サイトからダウンロードできます。
Memory Analyzer (MAT)
dump heapの Java versionに依存して2種類あります。
・IBM Java 8
・IBM Semeru Runtimes Java (IBM Java 8の後継)
その他、サイトの手順に従ってtarを解凍します。
2.OpenJ9 JVMのdumpを解析するための設定
(この手順は、上記IBMサイトからDLしたスタンドアロン版では不要です。)
ここでJVMの種類について述べておきます。JVMは、Java 仮想マシンといい、各OSの上でJava バイナリコードを翻訳・実行するための仲介をするソフトウェアです。いくつか種類があり、HotSpot 、OpenJ9などのJVMがあります。これらはガベージコレクションの挙動や、heap内部の構造が異なります。OpenJ9版のJVMが出力したheapを解析できるよう、対応したプラグインを導入する必要があります。
ちなみに、Hotspot JVM で出力されるheap dumpの拡張子は.hprof、OpenJ9 JVM で出力されるheap dumpの拡張子は.phd (portable heap dump)となります。
下図のように、Install New Softwareを選択します。
"IBM Diagnostic Tool Framework for Java" を検索し、導入します。
参考:IBM SDK, Java Technology Edition 8 - Heap dump
これで、.phd拡張子のファイルも読み込みできるようになりました。