CMSPermGenSweepingEnabled vs CMSClassUnloadingEnabled

Viewed 73598

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?

Thanks in advance

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.

1 Answers
Related