В Интернетах пишут, что по дефолту GC не чистит PermGen.
Чтобы заставить ее это делать, нужно запустить со следующими флагами:
-XX:+UseConcMarkSweepGC
-XX:+CMSClassUnloadingEnabled
-XX:+CMSPermGenSweepingEnabled
Где-то пишут, что CMS collector нужно использовать ооочень осторожно, что если heap size меньше 1GB и если нету 4 CPU, то его лучше не использовать вообще:
I would never use the CMS collector with less than 1GB of heap space. And I would not use the CMS collector unless I understood what effect it had on my application and system in general. Never ever ever use the CMS collector on a single CPU system. I would not turn it on unless I had at least 4 CPUs.
Еще пишут:
For example, in JVM 6 the -XX:+CMSPermGenSweepingEnabled option results in a warning to use -XX:+CMSClassUnloadingEnabled instead.
А на Сайте Оракла написано:
The following example JVM settings are recommended for most engine tier servers:
-server -XX:MaxPermSize=128m -XX:+UseParNewGC -XX:MaxNewSize=256m -XX:NewSize=256m -Xms768m -Xmx768m -XX:SurvivorRatio=128 -XX:MaxTenuringThreshold=0 -XX:+UseTLAB -XX:+UseConcMarkSweepGC -XX:+CMSClassUnloadingEnabled -XX:+CMSPermGenSweepingEnabled
Помогите разобраться с данными флагами. Стоит ли их использовать? В каких случаях?