代码之家  ›  专栏  ›  技术社区  ›  Rich

CMSPerMgensealingened与CMSClassUnloadingengenabled

  •  67
  • Rich  · 技术社区  · 15 年前

    我以前问过这个问题- What does JVM flag CMSClassUnloadingEnabled actually do? 但是这次有点不同!

    如果我用Java启动一个VM -XX:+CMSPermGenSweepingEnabled 设置标志,将打印以下消息:

    请使用CMSClassUnloadingEnabled代替将来启用的CMSpermGensWateringEnabled。

    这个 -xx:+cmspermgensweepingabled(已启用) 标记通常用于减轻 PermGen OutOfMemory 但是我有错误 read elsewhere 人们发现,按照上面的建议,他们仍然有这些错误,但坚持 -xx:+cmspermgensweepingabled(已启用) 以及 -XX:+CMSClassUnloadingEnabled 他们的虚拟机在重启之间保持的时间更长。

    -xx:+cmsclassUnloadingEnabled(已启用) 真正取代 -xx:+cmspermgensweepingabled(已启用) 还是两者都有好处?

    提前谢谢

    丰富的 PS:我知道Perm-Gen问题的根本原因仍然是类加载器泄漏,这更多的是关于如果我们使用上述选项,JVM会产生的消息。

    1 回复  |  直到 13 年前
        1
  •  76
  •   kschneid    15 年前

    据我所知,1.6 JVM唯一能做的就是 CMSPermGenSweepingEnabled 是打印消息-它没有按照1.5中的方式处理。为了 CMSClassUnloadingEnabled 有任何影响, UseConcMarkSweepGC 也必须设置。