我之前曾问过这个问题-What does JVM flag CMSClassUnloadingEnabled actually do?,但是这次有点不同!
如果启动设置了-XX:+CMSPermGenSweepingEnabled
标志的Java VM,则会显示以下消息:
-XX:+CMSPermGenSweepingEnabled
标志通常用于缓解PermGen OutOfMemory
错误,但是我发现read elsewhere人们发现,按照上述建议,他们仍然存在这些错误,但是通过坚持使用-XX:+CMSPermGenSweepingEnabled
和-XX:+CMSClassUnloadingEnabled
,其虚拟机在重新启动之间停留的时间更长。-XX:+CMSClassUnloadingEnabled
是否真的取代了-XX:+CMSPermGenSweepingEnabled
,还是同时拥有两者还有一些好处?
提前致谢
丰富
ps:我知道烫发问题的根源通常仍然是Classloader泄漏,这更多地是关于使用上述选项时JVM产生的消息。
最佳答案
据我所知,1.6 JVM使用CMSPermGenSweepingEnabled
所做的唯一事情就是打印该消息-它没有像1.5中那样处理。为了使CMSClassUnloadingEnabled
发挥作用,还必须设置UseConcMarkSweepGC
。