JVM Tools Interface (JVM TI)とは、様々な開発ツールやモニタリング・ツールで使用できるネイティブ(C/C++)プログラミング・インタフェースです。JVM TIは、VMの状態にアクセスする必要のある各種ツール(プロファイリング・ツール、デバッグ・ツール、モニタリング・ツール、スレッド分析ツール、カバレージ分析ツールを含むがこれに限らない)のためのインタフェースを提供します。
JVM TIに依存するエージェントのいくつかの例を次に示します。
HPROF
Java Debug Wire Protocol (JDWP)
java.lang.instrument
パッケージ
JVM TIの仕様は、JVM Tool Interfaceのドキュメントで参照できます。
JDKには、JVM TIの使用方法を示すコード例が含まれています。これらの例は$JAVA_HOME/demo/jvmti
ディレクトリにあります。いくつかの例のコードを次に示します。
mtrace
は、メソッドの呼出しおよび復帰回数を追跡するエージェント・ライブラリです。これは、バイトコード・インストゥルメンテーションを使って仮想マシンにロードされたすべてのクラスを計測し、使用頻度の高いメソッドのソート済みリストを出力します。
heapTracker
は、オブジェクトの割当てを追跡するエージェント・ライブラリです。これは、バイトコード・インストゥルメンテーションを使ってコンストラクタ・メソッドを計測します。
heapViewer
は、Ctrl+Breakハンドラが呼び出されたときにヒープ統計を出力するエージェント・ライブラリです。詳細は、「Ctrl+Breakハンドラ」を参照してください。ロードされたクラスごとに、そのクラスのインスタンス数と使用済み容量を出力します。