プロセスがクラッシュしてコアダンプが残る場合、またはgcore
でコアダンプを作成する場合、どのように分析できますか?
jmap
、jstack
、jstat
などを使用し、すべての変数の値を表示できるようにしたいと思います。
これにより、JVMがクラッシュまたはフリーズした理由を見つけることができます。
コアダンプを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は通常のコアファイルです。
たぶんVisualVMが役に立つかもしれません(まだ自分で試してみる機会がありませんでした)。リンク:
http://Java.Sun.com/javase/6/docs/technotes/guides/visualvm/coredumps.html
ここで必要なのはコアダンプですか?これには、Javaレベルの情報ではなく、実行中のJVMの生の内臓が含まれます。おそらく、JVMヒープダンプの方が必要なものです。
http://www.Oracle.com/technetwork/Java/javase/tsg-vm-149989.pdf を参照してください。コアファイルで「jdb」を直接使用できます。
実際、VisualVMはアプリケーションのコアダンプを処理できます。
「File/Add VM Coredump」を呼び出すだけで、Application Explorerに新しいアプリケーションが追加されます。その後、そのJVMのスレッドダンプまたはヒープダンプを取得できます。
Lady4jスタックアナライザーを試してみてください。
コアダンプを取得するには、gcoreの代わりにjmapとjpsを使用することをお勧めします(使用していない)。jhatの使用方法については、リンクを確認してください。 http://www.lshift.net/blog/2006/03/08/Java-memory-profiling-with-jmap-and-jhat
IBMは、Sun jvmでも使用できる多数のツールを提供しています。 alphaworksのプロジェクトのいくつかを見てください。ヒープおよびスレッドダンプアナライザーを提供します。
カール
Netbeans Profiler を試してみることをお勧めします。リアルタイム分析のための豊富なツールセットがあります。 IbMのツールはオフライン分析に試してみる価値があります