Java CMSClassWeepingEnabled与CMSClassUnloadingEnabled

Java CMSClassWeepingEnabled与CMSClassUnloadingEnabled,java,jvm-arguments,Java,Jvm Arguments,我以前问过这个问题-,但这次有点不同 如果我启动Java VM时设置了-XX:+cmd标记,则会打印以下消息: 今后请使用CMSClassUnloadinged代替CMSClassWeapingEnabled -XX:+cmsPermGensWeapingEnabled标志通常用于缓解PermGen OutOfMemory错误,但我发现,按照上述建议,人们仍然存在这些错误,但是通过坚持使用-XX:+CMSPermGenSweepingEnabled以及-XX:+CMSClassUnloading

我以前问过这个问题-,但这次有点不同

如果我启动Java VM时设置了
-XX:+cmd
标记,则会打印以下消息:

今后请使用CMSClassUnloadinged代替CMSClassWeapingEnabled

-XX:+cmsPermGensWeapingEnabled
标志通常用于缓解
PermGen OutOfMemory
错误,但我发现,按照上述建议,人们仍然存在这些错误,但是通过坚持使用
-XX:+CMSPermGenSweepingEnabled
以及
-XX:+CMSClassUnloadingEnabled
他们的虚拟机在重启之间保持的时间更长

-XX:+CMSClassUnloadingEnabled
是否真的取代了
-XX:+CMSClassWeapingEnabled
,或者两者兼而有之是否还有一些好处

提前谢谢

丰富的
ps:我知道perm gen问题的根本原因通常仍然是类加载器泄漏,这更多的是关于JVM在使用上述选项时产生的消息。

从我可以看出,1.6 JVM使用
cmsPermGensWeapingEnabled
唯一做的事情就是打印该消息-它没有按照1.5中的方式处理。要使
CMSClassUnloadingEnabled
产生任何影响,还必须设置
UseConMarkSweepGC

谢谢-您有任何链接或其他方法来备份此功能吗?下载JDK源代码(包括hotspot)并检查
hotspot/src/share/vm/runtime/globals.hpp
<1.5中存在代码>CMS,1.6中没有。此外,hotspot/src/share/vm/runtime/arguments.cpp的1.6版本包含用于打印消息的新代码。Ok查看jdk 1.6.23源代码时,除了globals.hpp刚刚设置为false外,没有找到任何使用位置。那么它真的被使用了???抱歉,如果我错过了它的使用位置,-XX:+cmsclasssUnloadingEnabled和-XX:+cmsclasssUnloadingEnabled在java 1.7中不可用,请参阅根据Oracle(请参阅)选项
-XX:+cmsclasssUnloadingEnabled
对java 1.7仍然有效。