4

我正在使用 Jboss eap 5.1 和 Seam 框架。我想调整我的 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

还是他们必须在一起?

4

1 回答 1

1

您可以启用两组选项。但是,这-XX:+DisableExplicitGC将阻止来自 RMI 会话的任何 SystemGC 调用。

-XX:+DisableExplicitGC推荐的用法是通过使用或至少使用标志来控制 System GC 调用的频率来完全禁用 SystemGC sun.rmi.dgc.*.gcInterval(以防止 SystemGC 过于频繁地发生)。

我建议使用-XX:+DisableExplicitGC并观察“死” RMI 对象的数量是否在增加,如果是,那么您需要开始使用sun.rmi.dgc.*.gcInterval标志进行调整。

这一切都是在你真的想避免 Full GC 的情况下提供的,也许容忍短暂的暂停 Full GC 并不是一个坏主意,因为无论如何你都需要它们来清理 RMI 对象。

于 2013-08-16T23:11:28.633 回答