Используя параметр HeapDumpOnOutOfMemoryError для дампов памяти для сервера приложений JBoss


Мне сказали, что я могу добавить -XX:+HeapDumpOnOutOfMemoryError параметр для моих параметров запуска JVM для моего сценария запуска JBoss, чтобы получить дамп кучи, когда мы получаем ошибку из памяти в нашем приложении. Мне было интересно, где эти данные сбрасываются? Это просто консоль или какой-то файл журнала? Если это просто консоль, что делать, если я не вошел в Unix-сервер через консоль?

4 164

4 ответа:

вот что документация Oracle говорит:

по умолчанию дамп "кучи" создан в файл с именем java_pid.hprof в the рабочий каталог виртуальной машины, как в пример выше. Вы можете указать альтернативное имя файла или каталога с помощью . Для пример -XX:HeapDumpPath=/disk2/dumps приведет к тому, что дамп кучи будет генерируется в /disk2/dumps справочник.

вы можете просмотреть этот дамп из консоли UNIX.

путь для дампа кучи будет предоставлен в виде переменной сразу после того, где вы разместили указанную переменную.

например:

-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=${DOMAIN_HOME}/logs/mps"

вы можете просмотреть дамп из консоли по указанному пути.

Мне было трудно расшифровать, что подразумевается под "рабочим каталогом виртуальной машины". В моем примере я использовал программу-оболочку Java Service для выполнения jar - файлы дампа были созданы в каталоге, где я разместил программу-оболочку, например c:\myapp\bin. Причина, по которой я обнаружил это, заключается в том, что файлы могут быть довольно большими, и они заполнили жесткий диск, прежде чем я обнаружил их местоположение.

Если вы не используете опцию "-XX:HeapDumpPath", то в случае JBoss EAP/As по умолчанию файл дампа кучи будет сгенерирован в каталоге" JBOSS_HOME/bin".