Выгрузка файла кучи Java на OutOfMemoryError с использованием Jmap
Я пытался сбросить файл кучи, когда OutOfMemoryError происходит в данном процессе Java с использованием Jmap.
Мне удалось выгрузить файл кучи, но я хочу добавить флаг HeapDumpOnOutOfMemoryError в Jmap, но я думаю, что я делаю что-то не так. Я делаю что-то неправильно? Я пробовал:
jmap -J-XX:+HeapDumpOnOutOfMemoryError -dump:live,file=/home/eduardo2/dumpfile.hprof 18763
Когда я запускаю вышеупомянутое, он просто говорит следующее - но не ожидает OutOfMemoryError:
>> Dumping heap to /home/eduardo2/dump21file.hprof ...
>> Heap dump file created
1 ответ
Решение
Вы смешиваете две разные вещи:
- использование
jmap
захватить дамп кучи из запущенного процесса, как вы сделали. См. https://docs.oracle.com/javase/7/docs/technotes/tools/share/jmap.html. - использование
-XX:+HeapDumpOnOutOfMemoryError
на Java-процесс, который вы ожидаете, чтобы броситьOOM
, Если возникает исключение, дамп будет записан в текущий каталог. См. https://docs.oracle.com/javase/7/docs/webnotes/tsg/TSG-VM/html/clopts.html