18

スレッドの問題があるJavaアプリケーションに取り組んでいます。

Netbeansプロファイラーを接続してアプリケーションをしばらく使用していると、いくつかのスレッドが作成されていることがわかります。それらのほとんどはいくつかで終了します.5 seconds。アプリケーションで使用されているSwingWorkersしか見つかりませんでした。

さらに、プロファイラーによって表示されるスレッドの大部分は通常のスレッドであり、SwingWorkersではありません。これらのスレッドがSwingWorkerによって間接的に作成されていない限り、アプリケーションが使用するいくつかのライブラリがそれらを作成しているのではないかと思います。

ここで、この問題を削除したいと思います。しかし、スレッド作成のソースを特定する方法を見つけることができませんでした。スレッド作成のソース(メソッド)を見つけることができる他のプロファイラー/ツールを提案していただければ幸いです。

4

2 に答える 2

9

Eclipseとそのデバッガーを使用することがオプションである場合は、次のことを試してみてください。

  • コードをJavaプロジェクトにインポートします。
  • Ctrl-Shift-T(Open Type)で、「スレッド」と入力します。Threadクラスのバイナリソースエディタが開きます。
  • アウトラインビューですべてのスレッドコンストラクターを選択し、コンテキストメニューの[メソッドブレークポイントの切り替え]を使用します。これにより、コンストラクターのブレークポイントが作成されます。
  • 実行してデバッグします。

あるいは

Yourkit Javaプロファイラーを入手できます。これは、評価にも使用できます。スタックトレースを含むアプリケーションで作成されたスレッドを表示できます(スレッドが終了した後も)。スレッドが作成された場所は表示されませんが、スレッドのスタックトレースにより、関連するライブラリに関する手がかりが得られる場合があります。

于 2012-05-11T17:58:22.557 に答える
9

JProfilerはそれを行うことができます。スレッドモニタービューには、スレッドが作成されたスタックトレースが表示されます-その時点でCPU記録がアクティブだった場合:

ここに画像の説明を入力してください

免責事項:私の会社はJProfilerを開発しています

于 2012-05-11T19:39:04.387 に答える