Ich versuche, die JVM des Servers einzustellen, an dem ich gerade arbeite, so dass ein Heap in der Datei gespeichert wird, wenn ein OOME auftritt.
Ich weiß, dass ich die Option -XX:-HeapDumpOnOutOfMemoryError
den JVM-Argumenten irgendwo hinzufügen muss, aber ich kann mir nicht vorstellen, wie das geht.
Zu Ihrer Information: Ich kann über PuTTY auf den Server zugreifen, also suche ich nach einer Befehlszeile dafür.
Die JVM, die ich verwende, ist OpenJDK64-Bit Server VM.
Ich weiß nicht, ob das relevant ist, aber die Anwendung ist eine Kriegsdatei.
%Vor%BEARBEITEN:
Ich habe etwas gefunden, korrigiere mich, wenn ich falsch liege: Da ich Tomcat benutze, habe ich beschlossen, diese Zeilen in die tomcat.conf-Datei einzufügen:
JAVA_OPTS = -XX: -HeapDumpOnOutOfMemoryError
JAVA_OPTS = -XX: HeapDumpPath = / root / dump
JAVA_OPTS = -Xmx20m
Was denkst du?
Diese Option von den HotSpot VM Optionen . Ich würde denken, dass es in der OpenJDK VM dasselbe sein würde, aber lassen Sie mich wissen, wenn es nicht ist.
-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=<path to dump file>
Sie können eine Speicherzuordnung auch manuell mit jmap erstellen, wenn Sie kennen die Prozess-ID:
jmap -J-d64 -dump:format=b,file=<path to dump file> <jvm pid>
Sie können JHat verwenden, um den Speicherauszug zu analysieren.
jhat <path to dump file>
Wie von @CoolBeans erwähnt, sind die folgenden JVM-Optionen:
%Vor%Um dies in tomcat zu setzen, erstellen Sie eine Datei namens setenv.sh (setenv.bat für Windows) unter TOMCAT_HOME / bin directory & amp; füge die folgende Zeile hinzu
%Vor%CATALINA_OPTS wird für diese Art von Optionen bevorzugt, da sie nicht auf den Shutdown-Prozess angewendet werden müssen.