我们正在 DEV 环境中对 Java 1.6 应用程序进行负载测试。JVM 堆分配为 2Gb,-Xms2048m -Xmx2048m。在负载测试下,应用运行流畅,从不使用超过 1.25Gb 的堆,垃圾回收完全正常。
在我们的 UAT 环境中,我们使用相同的参数运行负载测试,唯一的区别是 JVM,它分配了 4Gb,-Xms4096m -Xmx4096m,否则,硬件与 DEV 完全相同。但是在负载测试期间,性能非常糟糕,应用程序几乎耗尽了整个堆,并且垃圾收集猖獗。
我们一遍又一遍地运行这些测试,消除了所有可能影响性能的症状,但结果是一样的。在什么情况下会出现这种情况?