誰かがjavacore、スレッドダンプ、ヒープダンプの正確な違いを教えてもらえますか?これらのそれぞれがどの状況で使用されますか?
スレッドダンプは、すべてのライブスレッドのスタックのダンプです。したがって、ある時点でアプリが何をしているかを分析するのに役立ちます。また、ある種の「実行」問題(スレッドデッドロックなど)の診断に便利な間隔で行われる場合に役立ちます。
ヒープダンプは、Javaヒープメモリの状態のダンプです。このため、ある時点でアプリが使用しているメモリの使用状況を分析するのに役立ちます。メモリリークの診断に便利な間隔で実行する場合。
これが「未加工」の用語であり、多くの方法で提供できます。一般に、JVMおよびアプリサーバーからダンプされたファイルを記述するために使用され、この形式では低レベルのツールです。何らかの理由で他に何も取得できない場合に役立ちますが、適切なプロファイリングツールを使用すると、同様の情報を得ることができますが、情報を分析しやすくなります。
WebSphereに関して、javacoreファイルはスレッドダンプですが、ロックやロードされたクラスなどの多くの情報やいくつかの限られたメモリ使用情報がありますが、PHDファイルはヒープダンプです。
Javacoreファイルを読みたい場合は、手動で行うことができますが、より簡単にするIBMツール(BMスレッドおよびモニターダンプアナライザー)があります。ヒープダンプファイルを読み取るには、多くのIBMツールの1つであるMDD4Jまたはヒープアナライザーが必要です。
JVMヘッドダンプは、特定の時間におけるJVMヒープメモリのスナップショットです。したがって、単にJVMのヒープ表現です。それがオブジェクトの状態です。
JVMスレッドダンプは、特定の時点でのJVMスレッドのスナップショットです。それで、それはいつでもスレッドがしていたことです。これがスレッドの状態です。これは、ロックされたスレッド、ハングしたスレッド、実行中のスレッドなどの理解に役立ちます。
ヘッドダンプには、スレッドダンプよりもJavaクラスレベルの情報が含まれます。たとえば、ヘッドダンプは、JVMヒープメモリの問題やOutOfMemoryErrorエラーを分析するのに適しています。JVMヘッドダンプは、ヒープダンプは、kill -3を使用してプロセスを強制終了することで手動で作成できます。 Eclipseメモリアナライザーなどのツールを使用して分析する。
コアダンプは、オブジェクトのOSレベルのメモリ使用量です。ヘッドダンプよりも多くの情報があります。プロセスを意図的に強制終了した場合、コアダンプは作成されません。
スレッドダンプは、すべてのスレッドのスタックトレースのダンプです。つまり、各スレッドが突然例外をスローし、printStackTraceがそれを実行したかのようです。これは、特定の時点で各スレッドが何をしているかを確認できるようにするためであり、たとえば、デッドロックをキャッチするのに非常に適しています。
ヒープダンプは、JVMが使用しているメモリ全体の「バイナリダンプ」であり、たとえば、メモリが不足している理由を知る必要がある場合に便利です。たとえば、ヒープダンプでは、10億ユーザーオブジェクトは、メモリ保持の問題を示す1000だけであっても必要です。
ヒープダンプメモリに保持されているものを確認したいときはいつでもメモリ不足エラーヒープダンプ-メモリオブジェクトの画像-メモリ分析に使用Javaコア-別名スレッドダンプまたはJavaダンプ。特定の時点でのJVM内のスレッドアクティビティを表示するために使用されます。IBMjavacoresは、単にスレッドとスタック-ハング、デッドロック、およびパフォーマンス低下の原因を特定するために使用システムコア
スレッドダンプは、JVMで実行中のスレッドのjavacoreショースナップショットです。ハングの問題をデバッグするのに役立ちます。Javaレベルのデッドロックに関する情報を提供します。また、javacoresのIBmバージョンは、ヒープ使用量、各スレッドのCPU使用量、全体的なヒープ使用量、JVMが搭載するクラスの数など。
ヒープダンプは、JVMによるJavaヒープ使用量に関する情報を提供します。これは、メモリリークのデバッグに使用できます。 Javaでは、ネイティブメモリ不足エラーにより、通常「GPF」一般保護違反が発生してシステムダンプが発生する場合があります。