我有一个在 Debian squeeze 上运行的 Tomcat6 服务器,上面运行着 4 个 webapps,还有一个 JVM 内的 ActiveMQ 服务器。
它已经使用相同的内存设置和 openjdk-6 运行了大约一年。一切都运行良好,没有任何问题。
现在,由于各种原因,我需要尝试一下 Sun 的 JDK。
因此,我使用标准 apt-get 安装了 sun 的 jvm
apt-get install sun-java6-bin ,然后使用
更新 Java 替代方案 -s Java-6-sun
但是,当我启动 tomcat 时,内存不足,服务器甚至无法启动!如果我切换回 openJDK,一切又恢复正常。
我之前从未遇到过该服务器的任何内存问题,因此服务器突然无法使用 sun 的 JDK 启动感觉很奇怪。
有人知道为什么会发生这种情况吗?我是否遗漏了什么?
我当然已经在 tomcat 中设置了堆大小等。当前正在运行:
-Xms256m -Xmx1024m
如上所述,它在 openSDK 中有效,在 sun-jdk 中内存不足......
编辑:服务器是 64 位,openJDK 和 Sun 是 1.6.0,都是 64 位 JVM。
答案1
我要回答我自己的问题,因为我最终弄清楚了这个问题:
事实证明,我们已经设置了 xmx 和 xms,但是,我们没有设置 -XX:MaxPermSize。
在 openJDK 中,这个默认是 256mb,但在 SunJava 中只有 128mb。这就是切换时出现这种情况的原因。
在 catalina.sh 中输入 -XX:MaxPermSize=256m 后,两个 JVM 都可以正常工作!