2012-03-23 9 views
10

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

答えて

15

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:システムコールの観点から見た現在の活動を参照してください。

は、きちんとしたリスティングを提供します。これもリンクしますOperating System Specific tools

+0

@ Bubby4j:クラッシュの理由を知ることができましたか?それはOSと関係がありますか?私はJavaベースのツールを配備するためにcentosを評価するつもりです。 – Jayan

+0

openvzに問題がありました。 –

13

私はJVisualVMを提案します。これはJDKに付属しているので、コマンドラインにjvisualvmと入力するだけで起動できます。

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


他の有用な組み込みツールが含まれます。javaを実行しているの

jpsリストのプロセスIDを

jstack

jmapが発生し、指定JVMプロセス内の各スレッドのスタックダンプを出力れるプロセス指定されたJVMプロセスのヒープ・ダンプ(jvisualvmもヒープ・ダンプを生成することがあります)

jhatは、jmapまたはjvisualvmで生成されたヒープダンプを解析します。


さらに高度なプロファイラーもあります。 JProfilerは非常に高く評価されています。

2

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

関連する問題