4

実行中の Java ソフトウェアが詰まっています。中を見たいのですが、やり方がわかりません。

PID を与えることができるツールはありますか?それは、すべてのスレッドが現在どこにあるかと、変数のいくつかの値も教えてくれますか? 私はLinuxを実行しています。

問題の原因は多かれ少なかれわかっていますが、まだいくつかのケースが考えられるので、それを特定するといいでしょう。

エラーは数日おきにしか表示されず、デバッグ中には表示されなかったため再現できません。これは、敵を知るためのユニークな変更です。

何か案は?

4

3 に答える 3

11

実際には、visualvm +そのスレッド監視プラグインを使用してみることができます。また、スレッドダンプを作成したり、スレッドスタックトレースとその状態を表示したりすることもできます。jconsoleを使用してデッドロックを検出することもできます。どちらのツールもJDKの一部です。JConsole

スレッド分析にvisualvmを使用する方法について詳しく説明します。

于 2011-11-14T19:16:24.887 に答える
4

そのスレッド ダンプを取得できます。kill -3 PIDPID がプロセス ID の場合に使用できます。これにより、スレッド ダンプがプログラムの標準出力に出力されます。

これにより、すべてのスレッドが何を行っているかが表示されますが、変数に関する情報は得られません。とにかく、スレッド ダンプは非常に便利です。私はそこから始めます。それでも問題を解決できない場合は、jmap (JVM ツール、無料ですが使いにくい) や YourKit (有料の製品ですが非常に優れています) などを使用して、メモリのスナップショットを取得し、変数を調べることができます。

jmap に関する情報: jmap と jhat を使用した Java メモリのプロファイリング

于 2011-11-14T19:08:55.573 に答える