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:+CMSPermGenSweepingEnabledflag set, the following message is printed:
Please use CMSClassUnloadingEnabled in place of CMSPermGenSweepingEnabled in the future
The-XX:+CMSPermGenSweepingEnabledflag is often used to mitigate againstPermGen OutOfMemoryerrors, however I haveread elsewherethat people have found that by following the above advice they have still had these errors, but by sticking with-XX:+CMSPermGenSweepingEnabledas well as-XX:+CMSClassUnloadingEnabledtheir VM has stayed up longer between restarts.
Does-XX:+CMSClassUnloadingEnabledreally supersede-XX:+CMSPermGenSweepingEnabledor 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.
From what I can tell, the only thing that the 1.6 JVM does withCMSPermGenSweepingEnabledis to print that message - it's not processed the way it is in 1.5. ForCMSClassUnloadingEnabledto have any impact,UseConcMarkSweepGCmust also be set.
hotspot/src/share/vm/runtime/globals.hpp.CMSPermGenSweepingEnabledis present in 1.5 and absent in 1.6. In addition, the 1.6 version ofhotspot/src/share/vm/runtime/arguments.cppcontains new code for printing the message.–
kschneid
Sep 16 '10 at 14:11
本文探讨了JVM标志CMSClassUnloadingEnabled的实际作用,并对比了它与CMSPermGenSweepingEnabled的区别。通过分析JDK源代码,揭示了这两个标志在不同版本的JVM中的行为差异。
174万+

被折叠的 条评论
为什么被折叠?



