java - Java 8 中默认的 Full GC 间隔是多少

标签 java jboss garbage-collection wildfly

我们注意到我们的生产服务器(JavaEE、Wildfly 10)上有一个奇怪的行为。尽管仍有足够的可用内存,但 Java VM 每小时执行一次 Full GC。

enter image description here

VM 启动参数为:

-server
-Xms4g
-Xmx8g

以下参数为不是 活性:
-Dsun.rmi.dgc.client.gcInterval=3600000
-Dsun.rmi.dgc.server.gcInterval=3600000

那么 Java 8 中默认的 Full GC 间隔是多少,如何将其配置为动态的?

最佳答案

你说

-Dsun.rmi.dgc.client.gcInterval=3600000
-Dsun.rmi.dgc.server.gcInterval=3600000

没有“激活”。但是,这些是这些属性的默认值;即,如果您不为属性指定值,则您获得的值。

引用:Oracle 的 sun.rmi Properties文档。

So what is the default Full GC interval in Java 8



有关 DCG 触发的完整 GC,请参见上文。

除此之外,当请求(通过 System.gc() 调用)或当 JVM 认为有必要时,会发生完整的 GC。如果您不使用 RMI,则没有固定的时间间隔。

... and how can I configure it to be dynamic?



如果你的意思是,你怎么能阻止 RMI 每小时触发一次完整的 GC:
  • 一种方法是为这些属性指定(很多)更大的值。
  • 另一种方法是使用 -XX:+DisableExplicitGC 启动 JVM。旗帜。注意:这将禁用对 System.gc() 的所有调用不仅仅是 RMI 的 DGC 发出的调用。另见:Impact of setting -XX:+DisableExplicitGC when NIO direct buffers are used对于这可能导致的一些问题。
  • 第三种方法是使用 -XX:+ExplicitGCInvokesConcurrent旗帜。这减少了调用 System.gc() 的影响。 ,但它只适用于支持并发收集的 GC;例如CMS, G1, ZGCShenandoah .

    您可以潜在地调整其他内容以减少并发收集器“停止世界”的暂停,但这超出了本问题的范围。
  • 关于java - Java 8 中默认的 Full GC 间隔是多少,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48640443/

    相关文章:

    Java:创建 GZIPInputStream 时出错:不是 GZIP 格式

    java - 无法通过管理控制台在 JBoss 6.1 EAP 上进行非托管部署

    java - 无法在 Jboss EAP 7.0 服务器中创建 oracle 数据源

    c# - GC.KeepAlive 保留上下文

    java - G1 收集器每秒执行 50 次

    java - 垃圾收集器是否忽略异常

    java - 是否可以根据自定义属性在 web.xml 中启用/禁用安全约束?

    java - 为什么 Integer.getInteger 不起作用?

    java - 如何更改struts Action 类中声明的静态全局变量

    java - JBOSS占用CPU超过100%