Beshere
@Beshere
Разработчик

VisualVM или IDEA?

Я ищу утечку памяти в моем приложении при помощи VisualVM. Я нашел объекты (MyClass), которых в куче со временем становится все больше и больше - примерно 100 в час.

Дальше я хочу при помощи дебаггера IDEA разобраться, а что происходит, почему число объектов растет. И тут сюрприз - коллекция где живут объекты имеет размер 15. Число объектов MyClass в памяти равно 15.

Снова запускаю VisualVM, смотрю java-процесс, там memory explorer показывает 100 объектов MyClass.

Кто виноват и что делать?

P.S. MyClass связан с работой по сети и многопоточностью
  • Вопрос задан
  • 500 просмотров
Решения вопроса 1
@acwartz
Тут должна быть ваша реклама.
Дальше я хочу при помощи дебаггера IDEA разобраться, а что происходит, почему число объектов растет. И тут сюрприз - коллекция где живут объекты имеет размер 15. Число объектов MyClass в памяти равно 15.

Сборщик мусора бастует, пните его через System.gc()
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@Miron11
Пишу sql 20 лет. Срок :)
Видимо коллекции рассредоточены в потоках ( threads ) которые что - то удерживает в памяти.
Если Вы пользуетесь потоками ( thread ) непосредственно, то наверное надо вызывать "return" в методе run, чтобы они сигналили процесс, что их можно безопасно чистить, если же они в некоем контейнере, которым управляет некий объект по умолчанию ( pool ), то здесь все зависит от контейнера, есть хорошие, но бывают всякие :)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы