Правильная стратегия на случай, если не создается дамп кучи - PullRequest
0 голосов
/ 19 августа 2011

Я получил сервер с приложением Java на OpenJDK и CentOS.

Однако приложение, похоже, имеет утечку памяти и вылетает каждые несколько недель.Проблема заключается в том, что, хотя HeapDumpOnOutOfMemoryError указано, дамп кучи не создается.Если я создаю искусственную утечку памяти, которая немедленно завершает работу приложения, генерируется правильный дамп кучи.

Теперь я не прошу полного решения этой проблемы, но для хорошей стратегии.

Есть ли способ получить дамп кучи по требованию, покаприложение работает через неделю например?Есть ли способ выяснить, что не так в OpenJDK?Есть ли у вас альтернативные предложения о том, как подойти к этому?

1 Ответ

1 голос
/ 19 августа 2011

OpenJDK должен содержать инструмент с именем jmap, который может создавать дамп кучи с учетом идентификатора процесса. Чтобы получить точный синтаксис, вам нужно обратиться к справочной странице jmap . Если есть утечка памяти, это должно быть видно в дампе кучи даже до того, как приложение вылетает. Я также могу порекомендовать анализатор памяти eclipse , чтобы просмотреть дамп кучи и получить список подозреваемых утечек.

...