Java Out of memory automatische heap-dump-Datei-name

Ich habe mehrere Java-Prozesse, und ich bin versucht zu verwalten heap-dumps erstellt, wenn der OOM-Fehler auftreten. Wenn ich sage, verwalten, ich meine

  • Namen der heap-dump unterschiedlich, basierend auf dem ursprünglichen Prozess -
  • löschen, die älter heap-dumps zur Einsparung von Speicherplatz

Wenn dumping-heap auf OOM mit

 -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/tmp

die JVM erzeugt eine Datei mit dem folgenden Namen java_pidXXXX.hprof im angegebenen Ordner /tmp (wo XXXX ist die PID des Prozesses).
Gibt es trotzdem, um Sie ein anderes format angeben, wo die PID und das DATUM werden verwendet, um den Dateinamen zu erstellen?
Nach googeln für eine Stunde habe ich versucht myPrefix_$, {pid}, "date" ..usw.
Die einzigen zwei Dinge, die funktionieren sind

  1. nicht den Dateinamen angeben und Sie bekommen java_pidXXXX.hprof
  2. geben Sie eine statische Datei, name z.B. " \tmp\OOM.hprof.

wenn der \tmp Ordner nicht vorhanden ist wird Sie nicht erstellt, noch die heap-dump erzeugt wird.

Die eine Idee, die verwenden könnte, ist das hinzufügen eines Befehls auf OOM Fehler

-XX:OnOutOfMemoryError="doSomething.sh %p"

aber ich habe versucht, es zu vermeiden, da muss ich bereitstellen "doSomething.sh"

Warum müssen Sie das Datum in den Namen? Wenn Sie möchten, löschen Sie ältere Dateien, Sie können tun, dass durch die änderungszeit der Dateien, die Sie nicht brauchen, das Datum im Namen.

InformationsquelleAutor Dan M | 2015-12-03

Schreibe einen Kommentar