Javaアプリケーションの同期の問題をデバッグする場合、またはアプリケーションのスレッドがモニターに入るのを待機している時間が長い場合、「スレッド」タブ・グループの「競合」タブを見てください。最も競合しているロック、およびロックの取得を待機しているスレッドのスタック・トレースに注目してください(図4-4を参照)。
図4-4では、上部の範囲セレクタを使用してイベントが発生した場所を確認できます。選択した時間範囲内の競合イベントの範囲セレクタを拡大してください。
通常、問題になると予想されていなかった競合を探します。ロギングは、一部のアプリケーションで予想外のボトルネックになる可能性がある共通領域です。
プログラムの更新後またはいずれかの特定の時間に、Javaアプリケーションのパフォーマンスの低下が見られる場合は、状況が良いときにフライト記録を取り、状況が悪いときに別のフライト記録を取って、大きく増加している同期サイトを探します。
注意: 範囲セレクタに表示されるイベントは、すべてが同期イベントとは限りません。デフォルトでは、期間が20msより長い競合イベントのみが記録されます(このしきい値はフライト記録の開始時に変更可能)。より短いしきい値は、より多くのイベントを与えますが、オーバーヘッドが増加する可能性があります。競合が問題であると考えている場合は、非常に低いしきい値(ほんの数ミリ秒)で短い記録を取ることができます。これをライブ・アプリケーションで実行する場合は、非常に短い記録から開始し、パフォーマンス・オーバーヘッドを監視してください。