我以前问过这个问题-What does JVM flag CMSClassUnloadingEnabled actually do?,但这次略有不同!
如果我启动设置了-XX:+CMSPermGenSweepingEnabled
标志的Java VM,将显示以下消息:
以后请使用CMSClassUnloadingEnabled代替CMSPermGenSweepingEnabled-XX:+CMSPermGenSweepingEnabled
标志通常用于减轻PermGen OutOfMemory
错误,但是我在其他地方读到,人们发现,通过遵循上述建议,他们仍然有这些错误,但通过坚持使用-XX:+CMSPermGenSweepingEnabled
以及-XX:+CMSClassUnloadingEnabled
,他们的VM在重新启动之间停留的时间更长。-XX:+CMSClassUnloadingEnabled
真的取代了-XX:+CMSPermGenSweepingEnabled
吗?还是两者都有好处?
Rich ps:我知道perm gen问题的根本原因通常仍然是类加载器泄漏,这更多地是关于如果我们使用上面的选项,JVM产生的消息。
1条答案
按热度按时间niwlg2el1#
据我所知,1.6 JVM对
CMSPermGenSweepingEnabled
所做的唯一事情就是打印该消息--它不是以1.5中的方式处理的。要使CMSClassUnloadingEnabled
产生任何影响,还必须设置UseConcMarkSweepGC
。