it-swarm.com.de

Verwenden der Option -XX: HeapDumpPath, die Prozess-ID soll jedoch integriert werden

Bei Verwendung von -XX:+HeapDumpOnOutOfMemoryError überschreibt die JVM den Heap-Dump nicht, wenn sich unter dem angegebenen Pfad bereits eine Dump-Datei befindet. Ich möchte mehrere Heap-Dumps an einem nicht standardmäßigen Speicherort haben können und wollte die PID im Heap-Dump-Pfad verwenden, um dies zu ermöglichen. 

Wenn ich jedoch versuchte, das Argument so anzugeben:

-XX:HeapDumpPath=some/heapdump/path/heapdump-%p.hprof

Und dann einen Heap-Dump erstellt, bekam ich %p und nicht die tatsächliche pid im Dateinamen. Die Verwendung von %p scheint jedoch mit der -XX:OnOutOfMemoryError-Option zu funktionieren. Gibt es eine andere Syntax, die ich für -XX:HeapDumpPath= verwenden soll?

14
Nina

Dies kann ein Pfad zu einem Dateiverzeichnis OR sein. Wenn Sie einen Pfad zu einem Verzeichnis haben, enthält der generierte Dateiname standardmäßig eine PID.

http://www.Oracle.com/technetwork/Java/javase/tech/vmoptions-jsp-140102.html

17
Brett Okken

Sie sollten hinzufügen, welches Java Sie verwenden. Diese Optionen hängen vom Hersteller der JVM ab (IBM, Oracle usw.).

OnOutOfMemoryError sagt, WANN den Dump durchführen soll. HeapDumpPath sagt, wo der Speicherabzug abgelegt werden soll. Ich denke, dass die Verwendung von HeapDumpPath die erste Option aktiviert, aber ich empfehle beide zur besseren Übersicht.

Bei der ursprünglichen Frage ist die Verwendung der PID im Dump-Dateinamen eine bewährte Methode. Es kann insbesondere helfen, zu korrigieren und zu analysieren, was nach mehreren Problemen/Neustarts geschieht.

Die genaue Syntax wird erklärt hier .

0
mcoolive