Мне сказали, что я могу добавить -XX:+HeapDumpOnOutOfMemoryError
параметр в параметры запуска JVM в мой сценарий запуска JBoss, чтобы получить дамп кучи, когда в нашем приложении возникает ошибка нехватки памяти. Мне было интересно, где эти данные сбрасываются? Это просто на консоль или какой-нибудь лог-файл? Если это только для консоли, что если я не вошел на сервер Unix через консоль?
java
jboss
memory-leaks
heap
Дмитрий Трунов
источник
источник
Ответы:
Вот что говорит документация Oracle :
источник
HeapDumpPath
, вы увидите нечто похожее на"Unable to create /tmp/java_pidpid.hprof: File exists"
стандартный вывод. Не забудьте переместить файл дампа из пути дампа, чтобы очистить путь для любых будущих файлов дампа; и использовать<pid>
заполнитель в имени файла, чтобы увеличить энтропию в имени файла.Вы можете просмотреть этот дамп с консоли UNIX.
Путь к дампу кучи будет указан как переменная сразу после того, как вы поместили указанную переменную.
Например:
Вы можете просмотреть дамп из консоли по указанному пути.
источник
Мне было трудно расшифровать, что подразумевается под «рабочим каталогом виртуальной машины». В моем примере я использовал программу Java Service Wrapper для выполнения jar - файлы дампа были созданы в каталоге, где я разместил программу-обертку, например, c: \ myapp \ bin. Причина, по которой я это обнаружил, заключается в том, что файлы могут быть довольно большими, и они заполняют жесткий диск до того, как я обнаружил их местоположение.
источник
Если вы не используете опцию «-XX: HeapDumpPath», то в случае JBoss EAP / As по умолчанию файл дампа кучи будет создан в каталоге «JBOSS_HOME / bin».
источник