この付録では、現在のリリースの JDK で使用可能なツールのサマリーと、以前のリリースからの変更点を示します。
このセクションでは、Unix (Solaris OS および Linux) と Windows のプラットフォームで使用可能なトラブルシューティングツールの一覧を示します。
このドキュメントに記載されている JDK トラブルシューティングツールはすべて、Solaris OS および Linux 上の JDK 7 で使用できます。
Windows オペレーティングシステム上の JDK 7 では、次の JDK トラブルシューティングツールも使用できます。
HPROF プロファイラ
JConsole ユーティリティー
jdb ユーティリティー
jhat ユーティリティー
jinfo ユーティリティー
jmap ユーティリティー
jps ユーティリティー (現在 Windows 98 または Windows ME では使用できません)
jrunscript ユーティリティー
jstack ユーティリティー
jstat ユーティリティー (現在 Windows 98 または Windows ME では使用できません)
jstatd デーモン (現在 Windows 98 または Windows ME では使用できません)
visualgc ツール (現在 Windows 98 または Windows ME では使用できません)
これは、JDK 1.5 から JDK 7 への JDK トラブルシューティングツールおよびオプションの変更点の一覧です。
Java VisualVM ツールは、release 6 update 7 以降の JDK リリースに含まれています。
ヒープ解析ツール (HAT) は新しい jhat コマンド行ツールに置き換えられました。この新しいツールには、HAT と同じ機能に加えて、次の追加拡張機能も含まれています。
jhat は不完全なヒープダンプや切り詰められたヒープダンプを解析できます。
jhat は 64 ビットシステムで生成されたヒープダンプを読み取ることができます。
jhat は Object Query Language (OQL) をサポートしており、ユーザーはそれを使ってヒープダンプに関する独自のクエリーを作成できます。
JConsole ツールには次の変更点があります。
java.util.concurrent ロックなどのデッドロック検出用の新しいユーザーインタフェース (ボタン) が提供されています。
「接続」ダイアログが新しく追加されました。
「概要」タブが新しく追加されました。
モニター対象のアプリケーションの起動時に -Dcom.sun.management.jmxremote コマンド行オプションを指定する必要がなくなりました。
接続メカニズムを使用して VM に接続できます。
JConsole を実行している VM にコマンド行のフラグを渡すことができます。
com.sun.management.HotSpotDiagnostic MBean プロパティーが新しく追加されました。「MBean」タブでこのプロパティーを使用すると、ヒープのダンプ、VM オプションの取得と設定、および管理オプションの変更を動的に行えます。
jdb ツールには次の変更点があります。
メソッドの出口のトレースに戻り値を表示します。
メソッドの入口と出口を絶えずトレースします。
JPDA ProcessAttachingConnector が新しく追加されました。
jinfo ツールには次の変更点があります。
新しい jinfo -flag オプションを使用すると、指定された Java プロセスの特定の Java VM フラグの値を動的に設定、設定解除、および変更できます。
jinfo コマンドが Windows に新しく追加されましたが、オプションは jinfo -flag pid のみです。
jmap コマンドには次の変更点があります。
jmap -finalizerinfo オプションが新しく追加されました。このオプションを使用すると、コマンドはファイナライズを待っているオブジェクトに関する情報を出力します。
jmap -permstat オプションが、内部化された String インスタンスの数とサイズも出力するように更新されました。
jmap -dump:format=b,file=filename オプションが新しく追加されました。このオプションを使用すると、jmap は実行中のプロセス、またはコアファイルからヒープダンプを取得し、それをバイナリの HPROF 形式で指定のファイルに書き込みます。その後、jhat ツールを使ってこのファイルを解析できます。
jmap -F オプションが新しく追加され、Solaris OS および Linux でのみ使用できます。このオプションは、プロセスが応答しない場合に Serviceability Agent を強制的に使用します。
jmap -J オプションが新しく追加され、Solaris OS および Linux でのみ使用できます。このオプションは、jmap が実行されている VM にフラグを渡します。
histo オプション用の live サブオプションが新しく追加されました。このサブオプションを使用すると、ライブオブジェクトのみがカウントされます。
jmap コマンドが Windows に新しく追加されましたが、オプションは jmap -dump:dump-options pid および jmap -histo[:live] pid のみです。
jrunscript ツールが新しく追加されました。
jstack コマンドには次の変更点があります。
jstack pid オプションが、リモートの Ctrl + Break のように動作するよう変更されました (具体的には、スレッドダンプの出力が若干変わり、デッドロックと JNI グローバル参照に関する情報が増えました)。
jstack -F オプションが新しく追加され、Solaris OS および Linux でのみ使用できます。このオプションは、VM がハングアップしている場合にスレッドダンプを強制します。
jstack -l オプションが新しく追加されました。このオプションは、ヒープ内の所有可能なシンクロナイザ (ロック) に関する情報を出力します。
jstack コマンドが Windows に新しく追加されましたが、オプションは jstack pid および jstack -l pid のみです。
-XX:OnOutOfMemoryError=string オプションを使用すると、OutOfMemoryError がはじめてスローされたときに実行されるコマンドまたはスクリプトを指定できます。これは、jmap を使用するなどのデータの取り込みに役立ちます。
JDK release 5 update 7 以降、-XX:+HeapDumpOnOutOfMemoryError コマンド行オプションが新しく追加されました。このオプションが設定されているときに VM がネイティブなメモリー不足エラーを検出すると、ヒープダンプが生成されます。「B.1.2 -XX:+HeapDumpOnOutOfMemoryError オプション」を参照してください。
メモリー不足エラーのトラブルシューティングに役立つその他の新しい環境変数は次のとおりです。
-XX:HeapDumpPath=pathname
-XX:SegmentedHeapDumpThreshold=threshold
-XX:HeapDumpSegmentSize=size
致命的エラーログには、次の変更点があります。
致命的エラーログの場所を指定できるようになりました。「C.1 致命的エラーログの場所」を参照してください。
致命的エラーログの先頭に、インシデントを報告するための URL が表示されるようになりました。「C.3 ヘッダー形式」を参照してください。
VM に 2 つの組み込み DTrace プローブプロバイダ hotspot および hotspot_jni が含まれるようになりました。(Solaris 10 OS のみ)
fastdebug のビルドが、問題のテスト、診断、および切り離しに役立つ可能性があります。ただし、本番環境ではそれらを使用しないようにしてください。
Ctrl + Break ハンドラには、次の変更点があります。
Ctrl + Break で、スレッドの状態が表示されるようになりました。
Ctrl + Break で、ヒープ領域のサイズが表示されるようになりました。
-XX:+PrintConcurrentLocks を使用すると、Ctrl + Break で、各スレッドによって所有されている並行ロックの一覧の出力や、モニターロックと並行ロックの両方に関するデッドロックの検出も行われます。
HPROF format=b オプションでは、プリミティブ型のインスタンスフィールドおよびプリミティブ配列の内容をヒープダンプに含めるようになりました。
java.lang.OutOfMemoryError エラーがスローされるときに、スタックトレースも出力されるようになりました。また、特定のメッセージが、システムのスワップ空間がなくなりかけていること (Out of swap space?) を示すと、致命的エラーログが生成されるようになりました。