ネイティブ・メモリー・トラッキング(NMT)は、HotSpot JVMの内部メモリー使用状況を追跡するJava Hotspot VM機能です。NMTデータは、jcmdユーティリティを使用してアクセスできます。このリリースのNMTは、サード・パーティ・ネイティブ・コードのメモリー割当ておよびJDKクラス・ライブラリを追跡しません。また、このリリースでは、JMCのHotSpotにNMTのMBean
が含まれていません。
ネイティブ・メモリー・トラッキングには次の機能があり、jcmdと使用した場合、異なるレベルでメモリー使用量を追跡できます。
Hotspot VMのNMTは、デフォルトでオフになっています。JVMコマンドライン・オプションを使用して、この機能をオンにします。ネイティブ・メモリー・トラッキングのコマンド・マニュアル・ページを参照してください。
メモリー・トラッキング・データは、jcmdユーティリティを使用してアクセスできます。「jcmdによるNMTデータへのアクセス」を参照してください。
サマリー・レポートおよび詳細レポートの生成。
後の比較のための初期のベースラインの設定。
JVMコマンドライン・オプションによるJVM終了時のメモリー使用量レポートの要求。「VM終了時のNMT」を参照してください。
NMTは、jcmdユーティリティを使用して停止できますが、jcmdを使用して起動/再起動することはできません。
NMTを有効にした後、jcmdを使用してこれまでに収集したデータにアクセスします。
次のコマンドラインを使用して、NMTを有効にします。これを有効にすると、5-10%のパフォーマンス・オーバーヘッドが発生することに注意してください。
-XX:NativeMemoryTracking=[off | summary | detail]
off | NMTはデフォルトでオフになっています。 |
summary | サブシステム別に集約されたメモリー使用量のみ収集します。 |
detail | 個々の呼出しサイト別のメモリー使用量を収集します。 |
jcmdを使用して収集したデータをダンプし、必要に応じて、最後のベースラインと比較します。
jcmd <pid> VM.native_memory [summary | detail | baseline | summary.diff | detail.diff | shutdown] [scale= KB | MB | GB]
summary | カテゴリ別に集約されたサマリーを出力します。 |
detail |
|
baseline | 差分の比較のために新しいメモリー使用量スナップショットを作成します。 |
summary.diff | 最後のベースラインに照らして新しいサマリー・レポートを出力します。 |
detail.diff | 最後のベースラインに照らして新しい詳細レポートを出力します。 |
shutdown | NMTを停止します。 |
ネイティブ・メモリー・トラッキングが有効になっている場合、VMの終了時に最後のメモリー使用量データを取得するには、次のVM診断コマンドライン・オプションを使用します。詳細レベルは、トラッキング・レベルに基づいています。
-XX:+UnlockDiagnosticVMOptions -XX:+PrintNMTStatistics
VMの内部メモリー割当てをモニターし、VMのメモリー・リークを診断する方法は、トラブルシューティング・ガイドを参照してください。