web-dev-qa-db-ja.com

Javaコアダンプからの情報を分析する方法?

プロセスがクラッシュしてコアダンプが残る場合、またはgcoreでコアダンプを作成する場合、どのように分析できますか?

jmapjstackjstatなどを使用し、すべての変数の値を表示できるようにしたいと思います。

これにより、JVMがクラッシュまたはフリーズした理由を見つけることができます。

42
margus

コアダンプをgcoreまたはgdbで作成した場合、[〜#〜] hprof [〜#〜]ファイルと呼ばれるものに変換する必要があります。これらは、VisualVM、Netbeans、またはEclipseのMemory Analyzer Tool(以前のSAP Memory Analyzer)で使用できます。 Eclipse MATをお勧めします。

ファイルを変換するには、コマンドラインツールjmapを使用します。

# jmap -dump:format=b,file=dump.hprof /usr/bin/Java core.1234

ここで:

dump.hprofは作成するhprofファイルの名前です

/ usr/bin/Javaは、コアダンプを生成したJavaバイナリのバージョンへのパスです

core.1234は通常のコアファイルです。

42
chillitom

IBM JVMを使用している場合、 download theIBM Thread and Monitor Dump Analyzer。これは優れたツールです。スレッドの詳細を提供し、デッドロックなどを指摘できます。次の ブログ投稿 では、使用方法の概要を説明しています。

11
cmd

たぶんVisualVMが役に立つかもしれません(まだ自分で試してみる機会がありませんでした)。リンク:

http://Java.Sun.com/javase/6/docs/technotes/guides/visualvm/coredumps.html

5
brianmarco

ここで必要なのはコアダンプですか?これには、Javaレベルの情報ではなく、実行中のJVMの生の内臓が含まれます。おそらく、JVMヒープダンプの方が必要なものです。

5
skaffman

http://www.Oracle.com/technetwork/Java/javase/tsg-vm-149989.pdf を参照してください。コアファイルで「jdb」を直接使用できます。

2
Dave Pacheco

実際、VisualVMはアプリケーションのコアダンプを処理できます。

「File/Add VM Coredump」を呼び出すだけで、Application Explorerに新しいアプリケーションが追加されます。その後、そのJVMのスレッドダンプまたはヒープダンプを取得できます。

2
JB-

Lady4jスタックアナライザーを試してみてください。

http://www.lady4j.com/solveStack.jsp

1
Axel

コアダンプを取得するには、gcoreの代わりにjmapとjpsを使用することをお勧めします(使用していない)。jhatの使用方法については、リンクを確認してください。 http://www.lshift.net/blog/2006/03/08/Java-memory-profiling-with-jmap-and-jhat

0
Emil

IBMは、Sun jvmでも使用できる多数のツールを提供しています。 alphaworksのプロジェクトのいくつかを見てください。ヒープおよびスレッドダンプアナライザーを提供します。

カール

0
Karl

Netbeans Profiler を試してみることをお勧めします。リアルタイム分析のための豊富なツールセットがあります。 IbMのツールはオフライン分析に試してみる価値があります

0
Santosh Gokak