CMSPermGenSweepingEnabled vs CMSClassUnloadingEnabled


Я задавал этот вопрос раньше - что на самом деле делает флаг JVM CMSClassUnloadingEnabled?, но на этот раз все немного по-другому!

если я запускаю Java VM с -XX:+CMSPermGenSweepingEnabled флаг установлен, выводится следующее сообщение:

пожалуйста, используйте CMSClassUnloadingEnabled вместо CMSPermGenSweepingEnabled в будущем

The -XX:+CMSPermGenSweepingEnabled флаг часто используется для смягчения в отношении PermGen OutOfMemory ошибки, однако у меня есть читать в другом месте что люди обнаружили, что, следуя приведенным выше советам, у них все еще были эти ошибки, но придерживаясь -XX:+CMSPermGenSweepingEnabled а также -XX:+CMSClassUnloadingEnabled их виртуальная машина оставалась дольше между перезапусками.

тут -XX:+CMSClassUnloadingEnabled действительно заменяют -XX:+CMSPermGenSweepingEnabled или есть еще какая-то польза в них обоих?

спасибо заранее

богатое ps: Я знаю, что основной причиной проблем Пермского поколения по-прежнему обычно являются утечки загрузчика классов, это больше о сообщение, которое создает JVM, если мы используем вышеуказанные параметры.

1 67

1 ответ:

из того, что я могу сказать, единственное, что делает 1.6 JVM с CMSPermGenSweepingEnabled это напечатать это сообщение - оно не обрабатывается так, как в 1.5. Ибо CMSClassUnloadingEnabled чтобы иметь какое-либо влияние, UseConcMarkSweepGC также должны быть установлены.