Использование параметра HeapDumpOnOutOfMemoryError для дампа кучи для JBoss
Мне сказали, что я могу добавить -XX:+HeapDumpOnOutOfMemoryError
параметр для моего JVM start up options для моего сценария запуска JBoss, чтобы получить дамп кучи, когда мы получаем ошибку из памяти в нашем приложении. Мне было интересно, где эти данные сбрасываются? Это просто консоль или какой-то файл журнала? Если это только для консоли, что делать, если я не вошел в сервер Unix через консоль?
4 ответов
вот что документация Oracle говорит:
по умолчанию дамп "кучи" создан в файл под названием java_pid.hprof ПО в рабочий каталог виртуальной машины, как в пример выше. Вы можете указать альтернативное имя файла или каталог с . Для пример
-XX:HeapDumpPath=/disk2/dumps
вызовет сброс кучи генерируется в/disk2/dumps
справочник.
вы можете просмотреть этот дамп из консоли UNIX.
путь для дампа кучи будет предоставлен как переменная сразу после того, как вы разместили указанную переменную.
например:
-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=${DOMAIN_HOME}/logs/mps"
вы можете просмотреть дамп из консоли по указанному пути.
Мне было трудно расшифровать, что означает "рабочий каталог виртуальной машины". В моем примере я использовал программу Java Service Wrapper для выполнения jar-файлы дампа были созданы в каталоге, где я разместил программу-оболочку, например c:\myapp\bin - ... Причина, по которой я обнаружил это, заключается в том, что файлы могут быть довольно большими, и они заполнили жесткий диск, прежде чем я обнаружил их местоположение.
Если вы не используете опцию "-XX:HeapDumpPath", то в случае JBoss EAP/As по умолчанию файл дампа кучи будет создан в каталоге" JBOSS_HOME/bin".