Сборщик мусора Hotspot перестает работать, оставляя только GC - PullRequest
0 голосов
/ 09 июля 2011

Я испытываю что-то странное с GC Hotspot в определенной программе. Иногда кажется, что сборщик мусора просто умирает, и вместо этого запускается только сборщик мусора, каждый раз, когда пространство Eden заполняется. Излишне говорить, что это ужасно для производительности. Мне не удалось выяснить условия возникновения этой проблемы.

Глядя на JVM с таким поведением прямо сейчас, размер старого поколения составляет 170 МБ (используется и максимально) и никогда не увеличивается и не уменьшается в коллекции, Eden gen составляет 85 МБ, пространства Survivor никогда не используются (что Я предполагаю, что это согласуется с тем, что сборщик мусора не запущен), и общий размер выделенной кучи составляет 256 МБ (что, очевидно, соответствует Old + Eden).

Есть какие-нибудь подсказки относительно того, что может вызвать это?

1 Ответ

4 голосов
/ 09 июля 2011

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

Попробуйте увеличить максимальное пространство кучи.


Дело в том, что в пространстве (ах) выжившего должно быть достаточно свободного места, чтобы вместить все объекты, которые выжили в коллекции пространства Эдема.Если свободного места нет, копирующий коллектор не может работать, и JVM вынуждена отступить, чтобы пометить и развернуть.

Это основополагающее значение для работы сборочных / копирующих коллекторов.

Как я уже сказал, попробуйте увеличить пространство кучи.

...