CMSPermGenSweepingEnabled vs CMSClassUnloadingEnabled

2022-08-31 14:24:11

我以前问过这个问题 - JVM标志CMSClassUnloadIngEnabled实际上做了什么?但这次略有不同!

如果我启动设置了标志的 Java VM,则会打印以下消息:-XX:+CMSPermGenSweepingEnabled

请使用 CMSClassUnloadEnabled 代替 CMSPermGenSweepingEnabled

该标志通常用于减轻错误,但是我在其他地方读到过,人们发现通过遵循上述建议,他们仍然会遇到这些错误,但是通过坚持以及他们的VM在重新启动之间停留的时间更长。-XX:+CMSPermGenSweepingEnabledPermGen OutOfMemory-XX:+CMSPermGenSweepingEnabled-XX:+CMSClassUnloadingEnabled

是否真的取代了它们,或者同时拥有它们是否仍然有一些好处?-XX:+CMSClassUnloadingEnabled-XX:+CMSPermGenSweepingEnabled

提前致谢

Rich ps:我知道烫发生成问题的根本原因通常仍然是Classloader泄漏,这更多的是关于如果我们使用上述选项,JVM产生的消息。


答案 1

据我所知,1.6 JVM唯一要做的就是打印该消息 - 它没有像1.5中那样处理。对于任何影响,也必须设置。CMSPermGenSweepingEnabledCMSClassUnloadingEnabledUseConcMarkSweepGC


答案 2

推荐