CMSPermGenSweepingEnabled vs CMSClassUnloadingEnabled

He hecho esta pregunta antes – ¿Qué hace JVM marcar CMSClassUnloadingEnabled en realidad? , ¡pero esta vez es un poco diferente!

Si inicio una máquina virtual Java con el -XX:+CMSPermGenSweepingEnabled establecido, se imprime el siguiente mensaje:

Utilice CMSClassUnloadingEnabled en lugar de CMSPermGenSweepingEnabled en el futuro

El -XX:+CMSPermGenSweepingEnabled se usa a menudo para mitigar los errores de PermGen OutOfMemory , sin embargo, he leído en otro lugar que las personas han encontrado que al seguir los consejos anteriores todavía han tenido estos errores, pero al quedarse con -XX:+CMSPermGenSweepingEnabled también as -XX:+CMSClassUnloadingEnabled su VM se ha mantenido -XX:+CMSClassUnloadingEnabled durante más tiempo entre reinicios.

¿ -XX:+CMSClassUnloadingEnabled realmente reemplaza a -XX:+CMSPermGenSweepingEnabled o todavía hay algún beneficio en tenerlos a ambos?

Gracias por adelantado

Rich ps: Sé que la causa raíz de los problemas de perm gen sigue siendo por lo general fugas de Classloader, se trata más sobre el mensaje que produce la JVM si usamos las opciones anteriores.

Por lo que puedo decir, lo único que hace la 1.6 JVM con CMSPermGenSweepingEnabled es imprimir ese mensaje, no se procesa tal como está en 1.5. Para que CMSClassUnloadingEnabled tenga algún impacto, UseConcMarkSweepGC también debe configurarse.