我目前正在使用Wildlfly 10.1。在生产中,我们发现我们有很多gc暂停时间。对gc log的分析暴露了95%的gc运行是由System.gc()调用触发的。我们的应用程序代码不会调用它们中的任何一个。
这是Wildfly功能吗?
或者有人能指出我正确的方向来弄清楚这些System.gc()调用是否有意义?
当然,我知道有很多措施可以优化gc行为。我只是问自己为什么有这么多的System.gc()调用。
答案 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
可以使您的应用程序越来越慢。
答案 1 :(得分:1)
如果要查找rootRef.child("userMessages").child(uid).child(toId).removeObserver(withHandle: handleUserMessagesAdded)
的调用者,最可靠的方法是附加调试器并在其上设置方法入口断点。