我之前曾问过类似的问题:JVM标志CMSClassUnloadingEnabled到底是干嘛用的?,不过这一次有些许不同!如果我使用
那么,
注:我知道导致perm gen问题的根本原因通常是类加载器泄漏,但这更多关于JVM使用上述选项产生的信息。
-XX:+CMSPermGenSweepingEnabled
标志启动Java虚拟机,会输出以下信息:
请在未来使用CMSClassUnloadingEnabled代替CMSPermGenSweepingEnabled
-XX:+CMSPermGenSweepingEnabled
标志常常被用来缓解PermGen OutOfMemory
错误,但我在其他地方看到有人称,通过遵循上述建议仍然出现了这些错误。但是如果同时使用-XX:+CMSPermGenSweepingEnabled
和-XX:+CMSClassUnloadingEnabled
,他们的虚拟机在重启时间间隔内保持运行更长时间。那么,
-XX:+CMSClassUnloadingEnabled
是否真正取代了-XX:+CMSPermGenSweepingEnabled
,还是同时使用它们两个仍有益处?注:我知道导致perm gen问题的根本原因通常是类加载器泄漏,但这更多关于JVM使用上述选项产生的信息。
hotspot/src/share/vm/runtime/globals.hpp
文件。在1.5版本中,存在CMSPermGenSweepingEnabled
,但在1.6版本中不存在。此外,1.6版本的hotspot/src/share/vm/runtime/arguments.cpp
中包含用于打印消息的新代码。 - kschneid