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