web-dev-qa-db-de.com

Unterschied zwischen Javacore, Thread Dump und Heap Dump in Websphere

Kann mir jemand den genauen Unterschied zwischen Javacore, Thread Dump und Heap Dump sagen? In welcher Situation werden diese jeweils verwendet?

48
Sargunan

Ein Thread-Dump ist ein Dump der Stapel aller aktiven Threads. Daher ist es nützlich, um zu analysieren, was eine App zu einem bestimmten Zeitpunkt vorhat, und wenn dies in Intervallen durchgeführt wird, die bei der Diagnose einiger Arten von Ausführungsproblemen (z. B. Thread-Deadlock) hilfreich sind.

Ein Heap-Dump ist ein Dump des Status des Java-Heap-Speichers. Daher ist es hilfreich zu analysieren, welche Verwendung von Speicher eine App zu einem bestimmten Zeitpunkt macht, was bei der Diagnose einiger Speicherprobleme praktisch ist, und bei der Diagnose von Speicherverlusten in regelmäßigen Abständen.

Dies ist, was sie in „rohen“ Begriffen sind und auf viele Arten bereitgestellt werden könnten. In der Regel werden Dump-Dateien von JVMs und App-Servern beschrieben. In dieser Form handelt es sich um ein Tool auf niedriger Ebene. Nützlich, wenn Sie aus irgendeinem Grund nichts anderes bekommen können, aber Sie werden es einfacher finden, ein anständiges Profilierungswerkzeug zu verwenden, um ähnliche Informationen zu erhalten, die jedoch leichter zu analysieren sind.

In Bezug auf WebSphere ist eine Javacore-Datei ein Thread-Dump, allerdings mit vielen anderen Informationen wie Sperren und geladenen Klassen sowie einigen Informationen zur begrenzten Speicherauslastung, und eine PHD-Datei ist ein Heap-Dump.

Wenn Sie eine Javacore-Datei lesen möchten, können Sie dies von Hand tun, aber es gibt ein IBM-Tool (BM Thread und Monitor Dump Analyzer), das es einfacher macht. Wenn Sie eine Heap-Dump-Datei lesen möchten, benötigen Sie eines von vielen IBM Tools: MDD4J oder Heap Analyzer.

50
Jason

Ein Thread-Dump ist ein Dump aller Stack-Spuren aller Threads, d. H. Als ob jeder Thread plötzlich eine Exception auslöste und printStackTrace dies tat. Auf diese Weise können Sie sehen, was jeder Thread zu einem bestimmten Zeitpunkt tut, und zum Beispiel sehr gut geeignet, Deadlocks aufzufangen.

Ein Heap-Dump ist ein "binärer Dump" des gesamten Speichers, den die JVM verwendet, und ist beispielsweise nützlich, wenn Sie wissen möchten, warum Ihnen der Speicher ausgeht. In dem Heap-Dump können Sie beispielsweise feststellen, dass Sie eine Milliarde haben Benutzerobjekte, auch wenn Sie nur eintausend haben sollten, was auf ein Problem der Speicherbeibehaltung hindeutet.

1
stolsvik

JVM-Head-Dump ist eine Momentaufnahme eines JVM-Heap-Speichers zu einer bestimmten Zeit. Es ist also einfach eine Heap-Darstellung von JVM. Das ist der Zustand der Objekte.

JVM-Thread-Dump ist eine Momentaufnahme eines JVM-Threads zu einem bestimmten Zeitpunkt. Das war also, was Threads zu einem bestimmten Zeitpunkt machten. Dies ist der Zustand der Threads. Dies hilft beim Verständnis, wie gesperrte Threads, gehängte Threads und laufende Threads.

Head-Dump enthält mehr Informationen zu Java-Klasseninformationen als ein Thread-Dump. Zum Beispiel eignet sich Head Dump zum Analysieren von JVM-Heapspeicherproblemen und OutOfMemoryError-Fehlern. JVM-Head-Dump wird automatisch generiert, wenn OutOfMemoryError aufgetreten ist. Ein Heap-Dump kann manuell erstellt werden, indem der Prozess mit kill -3 abgebrochen wird. Das Generieren eines Heap-Dumps ist eine intensive Rechenaufgabe, die Ihren Jvm wahrscheinlich hängen lässt. es ist also kein Mittel, das man sachlich benutzt. Heap kann mit Tools wie dem Eclipse-Speicheranalysator analysiert werden.

Core-Dump ist eine Speicherverwendung von Objekten auf OS-Ebene. Es hat mehr Informationen als eine Müllhalde. Core Dump wird nicht erstellt, wenn ein Prozess absichtlich beendet wird.

1
Nu-ONE

Heap-Dumps immer dann, wenn Sie sehen möchten, was im Speicher gespeichert ist. Speicherfehler Heap-Dumps - Bild von Objekten im Speicher - werden für die Speicheranalyse verwendetJava-Cores - auch als bekannt. Thread-Dumps oder Java-Dumps, die zum Anzeigen der Thread-Aktivität in der JVM zu einem bestimmten Zeitpunkt verwendet werden. IBM Javacores sollte neben den Threads und Stacks viele weitere Informationen enthalten. Diese Informationen werden verwendet, um Hängen, Deadlocks und Gründe für die Leistungsverschlechterung zu ermitteln Systemkerne

1
Pradeep Yadav

Thread-Dumps sind Javacore-Snapshots von Threads, die in JVM ausgeführt werden. Es ist hilfreich, Probleme mit dem Debugging zu beheben, es werden Informationen zu Deadlocks auf Java-Ebene bereitgestellt. Außerdem bietet die IBM-Version von Javacores weitere nützliche Informationen, z. B. Heap-Nutzung, CPU-Nutzung Thread- und Gesamtheap-Nutzung sowie Anzahl der von der JVM geladenen Klassen.

Heapdumps: Enthält Informationen zur Verwendung von Java-Heapspeichern durch eine JVM, die zum Debuggen von Speicherverlusten verwendet werden kann. Heapdumps werden von IBM JVMs generiert, wenn eine JVM in outofmemoryerror ausgeführt wird. Heapdumps werden nur für Heaplecks in Java verwendet. Ein systembedingter Speicherfehler führt möglicherweise zu Systemabbildern mit einem allgemeinen Schutzfehler "GPF".

0
Krishna Jaladhi