Использование опции -XX: HeapDumpPath, но для интеграции идентификатора процесса

При использовании -XX:+HeapDumpOnOutOfMemoryError JVM не будет перезаписывать дамп кучи, если уже есть файл дампа по указанному пути. Я хочу иметь несколько дампов кучи в нестандартном местоположении и планировал использовать pid в пути дампа кучи, чтобы это разрешить.

Однако, когда я попытался указать аргумент следующим образом:

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

И затем создал кучу кучи, я получил %p, а не фактический pid в имени файла. Однако использование %p похоже на вариант -XX:OnOutOfMemoryError. Есть ли другой синтаксис, который я должен использовать для -XX:HeapDumpPath=?

Ответ 2

Вы должны добавить, какую Java вы используете. Эти параметры зависят от поставщика JVM (IBM, Oracle и т.д.).

OnOutOfMemoryError говорит WHEN, чтобы выполнить дамп. HeapDumpPath говорит WHERE, чтобы поставить дамп. Я думаю, что использование HeapDumpPath включается первым, но я советую использовать их для ясности.

О исходном вопросе, использование pid в имени файла дампа является хорошей практикой. Это может помочь, в частности, скомпоновать и проанализировать, что происходит после нескольких проблем/перезапуска.

Точный синтаксис объясняется здесь.