Я задал этот вопрос раньше - Что делает флаг JVM CMSClassUnloadingEnabled?, но на этот раз он немного отличается!
Если я запускаю виртуальную машину Java с установленным флагом -XX:+CMSPermGenSweepingEnabled
, выводится следующее сообщение:
Пожалуйста, используйте CMSClassUnloadingEnabled вместо CMSPermGenSweepingEnabled в будущем
Флаг -XX:+CMSPermGenSweepingEnabled
часто используется для уменьшения ошибок PermGen OutOfMemory
, однако я читал в другом месте, что люди обнаружили, что следуя приведенным выше советам, они все еще имели эти ошибки, но, придерживаясь -XX:+CMSPermGenSweepingEnabled
, а также -XX:+CMSClassUnloadingEnabled
, их VM оставалась дольше между перезагрузками.
Действительно ли -XX:+CMSClassUnloadingEnabled
заменяет -XX:+CMSPermGenSweepingEnabled
или есть ли еще какая-то польза от их обоих?
Заранее спасибо
Рич ps: Я знаю, что основной причиной проблем с перминными генераторами по-прежнему обычно является утечка Classloader, это больше о сообщении, которое создается JVM, если мы используем вышеуказанные параметры.