System.gc()调用Wildfly

时间:2018-02-02 09:21:52

标签: garbage-collection jvm wildfly

我目前正在使用Wildlfly 10.1。在生产中,我们发现我们有很多gc暂停时间。对gc log的分析暴露了95%的gc运行是由System.gc()调用触发的。我们的应用程序代码不会调用它们中的任何一个。

这是Wildfly功能吗?

或者有人能指出我正确的方向来弄清楚这些System.gc()调用是否有意义?

当然,我知道有很多措施可以优化gc行为。我只是问自己为什么有这么多的System.gc()调用。

2 个答案:

答案 0 :(得分:2)

System.gc()由Java RMI调用,或者更具体地由sun.misc.GC类调用 - Sourcecode

默认间隔为1小时。您可以使用以下参数进行设置:

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

设置-XX:+DisableExplicitGC可以使您的应用程序越来越慢。

另请参阅:What is the default Full GC interval in Java 8

答案 1 :(得分:1)

如果要查找rootRef.child("userMessages").child(uid).child(toId).removeObserver(withHandle: handleUserMessagesAdded) 的调用者,最可靠的方法是附加调试器并在其上设置方法入口断点。