Куда уходит моя память Java? - PullRequest
1 голос
/ 12 сентября 2011

Я использую тестовый набор JUnit из Ant или Eclipse.PermGen ограничен 200 МБ, куча - 1000 МБ.

Отчеты Java VisualVM выделяют PermGen как 200 МБ и выделяют кучу как 350 МБ.Это 550 МБ.

Однако общий размер виртуального набора для этого процесса составляет 2,5 ГБ, а размер резидентного набора - 1,8 ГБ.Я понимаю, что должны быть некоторые издержки, но если PermGen и heap составляют 0,5 ГБ, а процесс использует 1,8 ГБ, то где недостающие 1,3 ГБ?Как я могу диагностировать и исправить это?

Ответы [ 2 ]

0 голосов
/ 12 сентября 2011

Что такое коэффициент свободной памяти?Используете ли вы по умолчанию 70 и 40%.Возможно, есть объекты мусора, ожидающие сбора при следующем запуске gc.Также, возможно, процесс Java выделил себе дополнительную память (читайте о соотношении свободного места в куче).

Может быть, вопрос / ответ / комментарии, упомянутые в Настройка параметров сборки мусора в Java , предлагают некоторую помощь.

0 голосов
/ 12 сентября 2011

Пожалуйста, проверьте этот плагин Eclipse для анализа памяти.После того, как вы установили это, он предлагает различные виды.В одном конкретном представлении отображается память, используемая отдельными объектами.Это поможет вам точно определить объекты, которые используют память.

РЕДАКТИРОВАТЬ: я думаю, что я пропустил часть без кучи.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...