我们的 ColdFusion 服务器和正确配置 JRE 时遇到问题。为了解决这个问题,我们安装了 Oracle JRockit 并切换了 jvm.config 以尝试查找任何内存泄漏。
安装 JRockit 后,我们的服务器运行得比以往任何时候都好。我们将 JRockit 程序和控制台打开了几天,内存使用量保持在 200mb 以下。我们最终关闭了服务器上的程序,并且立即返回了内存使用问题。
这是来自 FusionReactor 的 Java 堆的屏幕截图,用于说明正在发生的事情。
由于我还没有足够的声誉点,所以我无法直接在此处发布此内容: http ://www.weblisters.com/icm/FusionReactorJavaHeap-JRockit-Console.png
以下是我们 jvm.config 文件中的主要设置:
java.home=C:/Progra~2/Java/jrockit-jdk1.6.0_33-R28.2.4-4.1.0/jre
java.args=-server -Xms1024m -Xmx1024m -Xgc:parallel -Dsun.io.useCanonCaches=false -Dcoldfusion.rootDir={application.home}/ -XX:+HeapDumpOnOutOfMemoryError -Xmanagement:ssl=false,authenticate=false,autodiscovery=true
在我们关闭 Jrockit 控制台后立即抛出此错误:错误:没有足够的存储空间可用于在 tsStartJavaThread (src/jvm/threads/vmthread/lifecycle.c:1096) 中处理此命令。
Attempting to allocate 1G bytes There is insufficient native memory for the Java Runtime Environment to continue.
有谁知道为什么垃圾收集 (GC) 在 JRockit 控制台窗口打开并运行的情况下工作得更好?我们不能将其作为永久解决方案开放。