スレッド・ボトルネックの識別

スレッド・ビュー」は、スレッド・ボトルネックを検出する場合の基本のビューです。このビューには、ご使用のプログラムの各スレッドのアクティビティーの記録が表示されるので、スレッド競合やデッドロックの識別に役立ちます。

前提条件:スレッド・データの収集

競合が発生するのは、すぐには使用可能にならないリソースをスレッドが待機しているときです。競合が起ると、コードの実行が低速になりますが、しばらくすると解消します。

デッドロックが発生するのは、あるスレッドが、2 番目のスレッドによってロックされているリソースを待機中で、 しかも 2 番目のスレッドが、最初のスレッドによってロックされているリソースを待機している場合です。デッドロックには、2 つ以上のスレッドが関係します。デッドロックが自ら解決されることはありません。デッドロックがあると、アプリケーション全体が一時停止したり、またはデッドロックが発生しているアプリケーション部分が一時停止することがよくあります。

スレッド競合およびデッドロックを突き止めるには、次の手順を実行します。

  1. スレッド・ビュー」を表示する: 「スレッド分析 (Thread Analysis)」プロファイル・リソースを右クリックし、 「アプリケーションから開く」 > 「スレッド・ビュー」 とクリックする。
  2. スレッド・ビュー」で、スレッド間の垂直方向の矢印を探す。 1 つの矢印は、あるスレッドが、別のスレッドがロックを解放するのを待機している、スレッド競合を示します。複数の矢印は、2 つのスレッドが同じデッドロック・スレッド状態に属している、デッドロックを示します。ダイヤ状のマーカーは、スレッドがロックを待機中だが、そのロックを保持しているスレッドを判別できないことを示します。
  3. ロックまたはデッドロックを待機しているスレッド・セグメントの上に、カーソルを一時停止する。 これによりツールチップが表示され、そこでロックの名前が明示され、 またそのロックを保持しているスレッドが識別されます。

以下に、競合の例を示します。

競合を表す垂直方向矢印がある「スレッド・ビュー」ウィンドウ のイメージ

以下に、デッドロックの例を示します。

デッドロック を表す垂直方向矢印の対がある「スレッド・ビュー」ウィンドウのイメージ

注: 「実行時間分析」プロファイル・タイプでプログラムをプロファイルする場合、スレッド・データを収集および表示 できますが、収集および表示できるのは「実行中」および「デッド (Dead)」状態のスレッドのデータだけです。ボトルネックを表示するには、プロファイル・セットに「スレッド分析 (Thread Analysis)」プロファイル・タイプを組み込む必要があります。

以下のトピックには、「スレッド・ビュー」を制御するための手順を示しています。

関連タスク
スレッド・ボトルネックの背後にあるメソッドの識別
関連資料
「スレッド・ビュー」
フィードバック
(C) Copyright IBM Corporation 2000, 2005. All Rights Reserved.