У меня есть несколько процессов Java, и я пытаюсь управлять кучами, создаваемыми при ошибке OOM. Когда я говорю об управлении, я имею в виду
- введите кучу дампа по-разному, основываясь на исходном процессе
- удалить старые кучи для сохранения дискового пространства
При сбросе кучи на OOM с помощью
-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/tmp
JVM создает файл со следующим именем java_pidXXXX.hprof в указанной папке /tmp (где XXXX является PID процесса). Нужно ли в любом случае указать другой формат, в котором PID и DATE используются для создания имени файла? После googling в течение часа я попробовал myPrefix_ $, {pid}, 'date' и т.д. Работающие только две вещи:
- не указывать имя файла, и вы получаете java_pidXXXX.hprof
- указать статическое имя файла, например. \TMP\OOM.hprof.
если папка \tmp не существует, она не создается и не создается куча дампа.
Единственная идея, которую можно использовать, - добавить команду в ошибку OOM
-XX:OnOutOfMemoryError="doSomething.sh %p"
но я пытался избежать этого, поскольку мне нужно развернуть "doSomething.sh"