I've kind of asked this question before - What does JVM flag CMSClassUnloadingEnabled actually do?, but this time it's slightly different!
If I start a Java VM with the -XX:+CMSPermGenSweepingEnabled
flag set, the following message is printed:
Please use CMSClassUnloadingEnabled in place of CMSPermGenSweepingEnabled in the future
The -XX:+CMSPermGenSweepingEnabled
flag is often used to mitigate against PermGen OutOfMemory
errors, however I have read elsewhere that people have found that by following the above advice they have still had these errors, but by sticking with -XX:+CMSPermGenSweepingEnabled
as well as -XX:+CMSClassUnloadingEnabled
their VM has stayed up longer between restarts.
Does -XX:+CMSClassUnloadingEnabled
really supersede -XX:+CMSPermGenSweepingEnabled
or is there still some benefit in having them both?
Rich ps: I know that the root cause of perm gen issues is still usually Classloader leaks, this is more about the message that the JVM produces if we use the above options.