Q
Java VMを起動する際のオプション”-XX:+JavaMonitorsInStackTrace”の「-XX」およびそれに指定されている「+JavaMonitorsInStackTrace」の意味について教えてください。
A
-XXで開始されるjavaのオプションは、JDK1.3.0以降でサポートされているJavaVM(HotSpot VM)用のオプションです。将来に渡ってサポートされる保証がないため一般に公開されていません。-XX:+JavaMonitorsInStackTraceは、JDK1.3系でJavaのスレッド情報にオブジェクトの占有、解放待ちを示す情報を付加させるオプションです。例えば、通常のjavaコマンド実行では、フルスレッドダンプのスタックトレースが、
|
のようになりますが、-XX:+JavaMonitorsInStackTraceを付加して実行することで、
|
のように、オブジェクトの占有(locked)、解放待ち(waiting to lock)の情報が出ます。これを他のスレッドと照合してJavaアプリレベルのデッドロック検出が可能となります。
なお、-XX:+JavaMonitorsInStackTrace はJDK1.3系で有効であり、JDK1.2.2ではこのオプションは受け入れられません。JDK1.2.2ではスレッドダンプの形式が異なるものの、対応する情報はデフォルトで出力されているため、このオプションは指定しないでください。
また、JDK1.4系では-XX:+JavaMonitorsInStackTraceはデフォルトとなっていますので指定する必要はありません。従ってJDK1.3系に閉じて指定してください。