java - 2gb - CMSPermGenSweepingEnabled vs CMSClassUnloadingEnabled
optifine jvm arguments (1)
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.