`
aerchi
  • 浏览: 427594 次
  • 性别: Icon_minigender_1
  • 来自: 昆明
文章分类
社区版块
存档分类
最新评论

CMSPermGenSweepingEnabled vs CMSClassUnloadingEnabled

 
阅读更多

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.

Download the JDK source code (which includes hotspot) and inspecthotspot/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.kschneidSep 16 '10 at 14:11
this is helpfulhvgotcodesOct 19 '10 at 0:46
Ok looking to the jdk 1.6.23 source code didn't find any place of usage except globals.hpp where it is just set to false. So it is really used??? Sorry if i missed the place where it is used.user253202Apr 13 '11 at 14:49



分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics