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