我以前也问过这个问题——JVM 标志 CMSClassUnloadingEnabled 实际上有什么作用? https://stackoverflow.com/questions/3334911/what-does-jvm-flag-cmsclassunloadingenabled-actually-do,但这一次略有不同!
如果我使用以下命令启动 Java VM-XX:+CMSPermGenSweepingEnabled
标志设置后,将打印以下消息:
以后请使用 CMSClassUnloadingEnabled 代替 CMSPermGenSweepingEnabled
The -XX:+CMSPermGenSweepingEnabled
flag 通常用于缓解PermGen OutOfMemory
错误,但是我有在其他地方阅读 http://www.coderanch.com/t/461502/Performance/java/CMSClassUnloadingEnabled-vs-CMSPermGenSweepingEnabled#2060063人们发现,通过遵循上述建议,他们仍然存在这些错误,但是通过坚持-XX:+CMSPermGenSweepingEnabled
也-XX:+CMSClassUnloadingEnabled
他们的虚拟机在重新启动之间保持运行的时间更长。
Does -XX:+CMSClassUnloadingEnabled
真正取代-XX:+CMSPermGenSweepingEnabled
或者同时拥有它们还有什么好处吗?
富有的
ps:我知道 perm gen 问题的根本原因通常仍然是类加载器泄漏,这更多地与我们使用上述选项时 JVM 产生的消息有关。
据我所知,1.6 JVM 所做的唯一事情是CMSPermGenSweepingEnabled
是打印该消息 - 它没有按照 1.5 中的方式进行处理。为了CMSClassUnloadingEnabled
产生任何影响,UseConcMarkSweepGC
也必须设置。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)