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