У меня есть система, в которой JVM работает как windows, в которой запущено 4 процесса. JVM настроен на автоматический перезапуск при возникновении ошибки.
Недавно я столкнулся с этой проблемой, когда JVM прекращает выполнение одного из процессов и просто загружает процессор (90 +%), но в журналах исключений не обнаружено. Однако примерно через 30 минут он показал ошибку нехватки памяти и затем перезапустил.
Я использовал -XX: + HeapDumpOnOutOfMemoryError, чтобы сгенерировать файл hprof, который я открыл в Eclipse MAT, но я делаю не понимаю, как отследить его до моего кода.
Мои вопросы:
Можно ли сгенерировать OOME, когда JVM зависает вместо ожидания Stacktrace распечатать ошибку?
Есть ли способ отловить последний запущенный процесс перед зависанием? Или способ выяснить, какой процесс может иметь утечку.
Большое спасибо!