2015-02-25 6 views
1

Я пытался использовать JConsole для определения того, есть ли у меня утечка памяти.Если использование памяти «Кучи», показанное в JConsole, обычно возвращается к 0 после GC, нет ли утечки памяти?

Я пропустил мой код в течение длительного времени и гарантировал, что он выполняет много итераций всех доступных функций, многократно запуская/останавливая все потоки, создавая и отпуская каждый объект много раз, столкнувшись с как можно большим количеством неожиданных условий/ошибок ,

В конце концов, если я нажму «Выполнить GC» несколько раз в Jconsole, а зеленый график памяти «Кучи» вернется в 0-- означает ли это, если весь код был выполнен несколько раз, что я (возможно,) не имеют утечки памяти?

Или может быть утечка памяти в другом месте, кроме кучи?

ответ

1

Я вижу некоторые возможности:

  • Не закрытые контакты
  • Карты с ключами, которые неправильно реализованы хэш-код/​​равен метод
  • в WebApps: Данные хранятся в сеансах
  • чистых стадиях до код не запускается из-за исключений -> В большинстве случаев эти утечки происходят в процессе производства, потому что им нужно время «для наращивания» или особые ситуации: недоступная база данных, ...

Ваш тест является хорошим признаком, однако никакой гарантии.

+1

Не забывайте просачивать резьбу. И утечки classloader, но это специальные. –

+0

Спасибо! Я бы поднял, но еще нет репутации 15 :( – RonR

 Смежные вопросы

  • Нет связанных вопросов^_^