我们的 JBoss 3.2.6 应用程序服务器存在一些性能问题,在打开详细的 GC 日志记录并使用 GCViewer 分析这些日志后,我们注意到一段时间后(服务器重新启动后 7 到 35 小时)GC 变得疯狂。似乎最初 GC 工作正常并且每隔一小时左右执行一次 GC,但在某个时候它开始变得疯狂并每分钟执行一次完整的 GC。由于这仅在我们的生产环境中发生,因此无法尝试关闭显式 GC (-XX:-DisableExplicitGC) 或修改 RMI GC 间隔,但由于这发生在几个小时后,它似乎不是由已知引起的RMI GC 问题。
有任何想法吗?
更新:
我还不能发布 GCViewer 输出,但它似乎根本没有达到最大堆限制。在 GC 发疯之前,它的 GC-ing 很好,但是当 GC 发疯时,堆不会超过 2GB(最大 24GB)。除了 RMI,还有其他方法可以触发显式 GC 吗?(我检查了我们的代码,没有调用 System.gc())