ネイティブ・メモリー・トラッキング

概要

ネイティブ・メモリー・トラッキング(NMT)は、HotSpot JVMの内部メモリー使用状況を追跡するJava Hotspot VM機能です。NMTデータは、jcmdユーティリティを使用してアクセスできます。このリリースのNMTは、サード・パーティ・ネイティブ・コードのメモリー割当ておよびJDKクラス・ライブラリを追跡しません。また、このリリースでは、JMCのHotSpotにNMTのMBeanが含まれていません。

主な機能

ネイティブ・メモリー・トラッキングには次の機能があり、jcmdと使用した場合、異なるレベルでメモリー使用量を追跡できます。

ネイティブ・メモリー・トラッキングの使用方法

NMTを有効にした後、jcmdを使用してこれまでに収集したデータにアクセスします。

NMTの有効化

次のコマンドラインを使用して、NMTを有効にします。これを有効にすると、5-10%のパフォーマンス・オーバーヘッドが発生することに注意してください。

-XX:NativeMemoryTracking=[off | summary | detail]

off NMTはデフォルトでオフになっています。
summary サブシステム別に集約されたメモリー使用量のみ収集します。
detail 個々の呼出しサイト別のメモリー使用量を収集します。

jcmdによるNMTデータへのアクセス

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終了時のNMT

ネイティブ・メモリー・トラッキングが有効になっている場合、VMの終了時に最後のメモリー使用量データを取得するには、次のVM診断コマンドライン・オプションを使用します。詳細レベルは、トラッキング・レベルに基づいています。

-XX:+UnlockDiagnosticVMOptions -XX:+PrintNMTStatistics

VMの内部メモリー割当てをモニターし、VMのメモリー・リークを診断する方法は、トラブルシューティング・ガイドを参照してください。


Copyright © 1993, 2020, Oracle and/or its affiliates. All rights reserved.