При отладке Java, что может привести к зависанию моего процесса - PullRequest
2 голосов
/ 08 октября 2010

У меня есть процесс на сервере Java, который выполняет тяжелую обработку. Он периодически останавливает обработку, как в журнале, останавливается, и деятельность прекращается, но процесс все еще активен.

У меня такое случалось при отладке несколько раз. Когда это происходит, я нажимаю паузу / прерывание в отладчике, чтобы я мог проверить запущенные потоки и найти причину остановки. Но кнопка паузы не врывается в программу, как обычно, просто сидит там. Я использую IntelliJ IDEA, но я не уверен, что проблема возникнет в IDE или JVM.

Я пытаюсь проникнуть в программу до того, как проблема возникнет, и она работает нормально, процесс останавливается, и я могу проверить список потоков.

Кто-нибудь знает, почему JVM не отвечает на паузу / прерывание отладки? И как это может попасть в эту ситуацию? Я немного застрял, так как у меня нет возможности диагностировать эту проблему, не имея возможности увидеть состояние программы, когда оно не работает. Журналы, ведущие к проблеме, не показывают проблем.

1 Ответ

1 голос
/ 09 октября 2010

Можете ли вы подключиться к JVisualVM? Ваш процессор на 100%? У нас была проблема равных. Приложение было остановлено. JVisualVM больше не подключается. Дамп потока с помощью jstack показывает, что все потоки остановлены (нет различий между несколькими дампами потоков), но виртуальная машина потребляет 100% ЦП. Мы сменили оборудование, и проблема была решена. Мы полагаем, что это была проблема с ОЗУ, и сборка мусора проходила в бесконечном цикле. Но это только теория.

Пожалуйста, сообщите мне, если вы можете решить проблему.

...