CMSPermGenSweepingEnabled与CMSClassUnloadingEnabled
我曾问过这个问题 – JVM标志CMSClassUnloadingEnabled实际上做了什么? ,但是这次有点不同!
如果我使用-XX:+CMSPermGenSweepingEnabled
标志设置启动了一个Java VM,则会打印以下消息:
将来请使用CMSClassUnloadingEnabled来代替CMSPermGenSweepingEnabled
-XX:+CMSPermGenSweepingEnabled
标志通常用于缓解PermGen OutOfMemory
错误,但是我已经在其他地方看到人们已经发现通过遵循上述build议,他们仍然有这些错误,但通过坚持使用-XX:+CMSPermGenSweepingEnabled
如-XX:+CMSClassUnloadingEnabled
它们的虚拟机在重启之间停留时间更长。
是否-XX:+CMSClassUnloadingEnabled
确实取代了-XX:+CMSPermGenSweepingEnabled
,还是让它们都有一些好处?
提前致谢
Rich ps:我知道perm gen问题的根本原因通常仍然是Classloader泄漏,如果使用上述选项,这更多的是JVM产生的消息。
从我所知道的情况来看,1.6 JVM用CMSPermGenSweepingEnabled
做的唯一事情就是打印这条消息 – 它没有像1.5那样处理。 对于CMSClassUnloadingEnabled
有任何影响,还必须设置UseConcMarkSweepGC
。