17

半分の時間でハングアップし、残りの半分で JVM がクラッシュする Java アプリケーションがあります。何が起こっているのかを確認するために使用できるツールはありますか? CentOS 5.6 を使用しています

4

3 に答える 3

21

手始めに、JVisualVMをお勧めします。JDK が付属しているためjvisualvm、コマンド ラインに入力するだけで開始できます。

起動すると、実行中の JVM に接続できるため、ハングした Java プロセスに接続して、実行中のすべてのスレッドとヒープの内容のスタック ダンプを検査できるはずです。


その他の便利な組み込みツールには、次のものがあります。

jps実行中の Java プロセスのプロセス ID を一覧表示します

jstack指定された JVM プロセスの各スレッドのスタック ダンプを出力します

jmap指定された JVM プロセスのヒープ ダンプを生成します (jvisualvm はヒープ ダンプも生成できます)。

jhatjmap または jvisualvm で生成されたヒープ ダンプを分析します


もちろん、より洗練されたプロファイラも利用できます。JProfilerは非常に高く評価されています。

于 2012-03-23T02:56:56.793 に答える
17

2 つの異なるケースがあります。

アプリケーションのクラッシュ: OOM でしたか? NPE? 例外は何でしたか?jvm クラッシュが発生した場合は、hs_err_.log ( http://java.sun.com/j2se/1.5/pdf/jdk50_ts_guide.pdf )が表示されます。

ファイルを見ると、独自の JNI がクラッシュまたは JVM バグを引き起こしているかどうかがわかります。

アプリケーションのハング:私は、visualvm または jstat から始めます (どちらも JDK の一部です)。スレッドの現在の状態を確認し、アプリケーション エラーがあるかどうかを確認できます。

内部プロセスを確認するのに役立つその他の Linux ツール:

  • lsof : プロセスが開いたファイルが多すぎるかどうかを確認できます
  • strace : システム コールの観点から現在のアクティビティを確認します。

Oracle ツールのドキュメントには、かなりきちんとしたリストが記載されています。また、オペレーティング システム固有のツールもリンクしています。

于 2012-03-23T05:54:33.320 に答える
2

これらのケース (ハング、フリーズ、...) では、ヒープ ダンプを分析して、アプリケーションで何が起こっているかを把握する必要があります。JVisualVM を使用してダンプを取得するか、適切な JVM パラメータを追加して、クラッシュ時のヒープの内容。

于 2012-03-23T06:40:29.353 に答える