我以前问过这个问题-- What does JVM flag CMSClassUnloadingEnabled actually do?,但这次略有不同!
如果我在设置了-XX:+CMSPermGenSweepingEnabled
标志的情况下启动Java,将打印以下消息:
以后请用CMSClassUnloadingEnabled代替CMSPermGenSweepingEnabled
-XX:+CMSPermGenSweepingEnabled
标志经常被用来缓解PermGen OutOfMemory
错误,但是我有read elsewhere发现,人们发现通过遵循上面的建议,他们仍然有这些错误,但通过坚持使用-XX:+CMSPermGenSweepingEnabled
和-XX:+CMSClassUnloadingEnabled
,他们的虚拟机在两次重启之间保持了更长的时间。
-XX:+CMSClassUnloadingEnabled
真的会取代-XX:+CMSPermGenSweepingEnabled
吗?或者两者兼而有之还有一些好处吗?
提前感谢
Rich ps:我知道perm gen问题的根本原因通常仍然是Classloader泄漏,这更多的是关于如果我们使用上面的选项JVM产生的消息。
发布于 2010-09-16 01:14:05
据我所知,1.6JVM对CMSPermGenSweepingEnabled
做的唯一一件事就是打印消息--它的处理方式与1.5不同。要使CMSClassUnloadingEnabled
生效,还必须设置UseConcMarkSweepGC
。
https://stackoverflow.com/questions/3717937
复制相似问题