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

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

Ответ 1

Здесь документация Oracle должна сказать:

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

Ответ 2

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

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

например:.

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

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

Ответ 3

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

Ответ 4

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