“VM Thread”, 100% cpu. Сборщик мусора съедает процессорное время

Vitaliy

При работе томката по началу все работает быстро. А потом начинает все тормозить. Смотрю, из 4 ядер одно ядро работает на 100%, сделал дамп. Оказалось, это поток "VM Thread":

"VM Thread" prio=10 tid=0x0000000040178000 nid=0x940 runnable

Это поток сборки мусора.

Железо 4 ядера, 6 ГБ оперативы

Параметры запуска томката:

  1. -d64 -server -Xms512M -Xmx4096M -XX:MaxPermSize=512M -XX:+CMSPermGenSweepingEnabled -XX:+CMSClassUnloadingEnabled

  2. -d64 -server -Xms512M -Xmx4096M -XX:MaxPermSize=512M -XX:+UseConcMarkSweepGC -XX:+CMSPermGenSweepingEnabled -XX:+CMSClassUnloadingEnabled

И то и то - результат один. Память занимает 2 Гб из выделенных 4-х.

Почему при работе сборщика мусора остальные потоки блокируются? Какие параметры прописать, чтобы такого не было?

1 ответ

Vitaliy

Все эти параметры ничего не значат. У вас утечка и виртуальная машина работает на последних крошках, которые удаётся выделить путём бесконечной сборки. Странно, что она не завершается.

Никакие ключи вам не помогут. Надо разобраться, где у вас утечка. Сделайте heap dump.

licensed under cc by-sa 3.0 with attribution.