我正在使用带有Seam Framework的Jboss eap 5.1。我想调整我的GC以避免使用FullGC。我已经在使用CMS GC。这将是我在生产系统上的下一个配置:
-Xms24g
-Xmx24g
-XX:+UseCompressedOops
-XX:NewRatio=4
-XX:SurvivorRatio=8
-XX:+UseConcMarkSweepGC
-XX:+UseParNewGC
-XX:+DisableExplicitGC
-XX:+UseCMSInitiatingOccupancyOnly
-XX:+CMSClassUnloadingEnabled
-XX:+CMSScavengeBeforeRemark
-XX:CMSInitiatingOccupancyFraction=68
我的问题是“我是否需要删除此JVM选项”?:
-Dsun.rmi.dgc.client.gcInterval=3600000
-Dsun.rmi.dgc.server.gcInterval=3600000
如果我要添加这个:
-XX:+DisableExplicitGC
或者他们必须在一起?
答案 0 :(得分:1)
您可以启用这两个选项集。但是,-XX:+DisableExplicitGC
将阻止来自RMI会话的任何SystemGC调用。
推荐用法是使用-XX:+DisableExplicitGC
完全禁用SystemGC,或者至少使用sun.rmi.dgc.*.gcInterval
标志来控制系统GC调用的频率(以防止SystemGC频繁发生)。
我建议使用-XX:+DisableExplicitGC
并观察“死”RMI对象的数量是否在增长,如果是,则需要开始使用sun.rmi.dgc.*.gcInterval
标志进行调整。
这一切都提供了你真的想要避免使用Full GC,或许可以容忍短暂停顿Full GC不会是一个坏主意,因为无论如何你都需要它们来清理RMI对象。