wake-up-neo.com

Verwenden des Parameters HeapDumpOnOutOfMemoryError für den Heapspeicherauszug für JBoss

Mir wurde gesagt, dass ich den Parameter -XX:+HeapDumpOnOutOfMemoryError Zu meinen JVM-Startoptionen in meinem JBoss-Startskript hinzufügen kann, um einen Heap-Dump zu erhalten, wenn in unserer Anwendung ein Fehler aufgrund unzureichenden Speichers auftritt. Ich habe mich gefragt, wo diese Daten gespeichert werden. Geht es nur um die Konsole oder um eine Protokolldatei? Wenn es sich nur um die Konsole handelt, was ist, wenn ich nicht über die Konsole beim Unix-Server angemeldet bin?

176
EdC

Hier ist, was Oracle Dokumentation zu sagen hat:

Standardmäßig wird der Heap-Dump in einer Datei namens Java _ pid . Hprof im Arbeitsverzeichnis der VM erstellt, wie im obigen Beispiel. Sie können einen alternativen Dateinamen oder ein alternatives Verzeichnis mit der Option -XX:HeapDumpPath= Angeben. Zum Beispiel bewirkt -XX:HeapDumpPath=/disk2/dumps, Dass der Heap-Dump im Verzeichnis /disk2/dumps Generiert wird.

237
Matt Solnit

Sie können diesen Speicherauszug über die UNIX-Konsole anzeigen.

Der Pfad für den Heap-Dump wird als Variable direkt nach dem Platzieren der genannten Variablen angegeben.

Z.B.:

-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=${DOMAIN_HOME}/logs/mps"

Sie können den Speicherauszug in der Konsole unter dem angegebenen Pfad anzeigen.

Ich fand es schwer zu entschlüsseln, was mit "Arbeitsverzeichnis der VM" gemeint ist. In meinem Beispiel habe ich das Service Wrapper-Programm Java Service Wrapper) verwendet, um eine JAR-Datei auszuführen. Die Sicherungsdateien wurden in dem Verzeichnis erstellt, in dem ich das Wrapper-Programm abgelegt hatte, z. B. c:\myapp\bin. Der Grund, warum ich dies entdeckt habe, ist, dass die Dateien sehr groß sein können und die Festplatte voll ist, bevor ich ihren Speicherort gefunden habe.

3
B5A7

Wenn Sie nicht die Option "-XX: HeapDumpPath" verwenden, wird bei JBoss EAP/As standardmäßig die Heap-Dump-Datei im Verzeichnis "JBOSS_HOME/bin" generiert.

2