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.