Tomcat
切換JVM後Tomcat OutOfMemory
我有一個在 Debian 擠壓上執行的 Tomcat6 伺服器,上面執行了 4 個 webapp,還有一個在 JVM 中的 ActiveMQ 伺服器。
它已經執行了大約一年,使用相同的記憶體設置,使用 openjdk-6。一切都很順利,一點問題都沒有。
現在,由於各種原因,我需要試用 Sun 的 JDK。
所以,我用標準的 apt-get 安裝了 sun 的 jvm
apt-get install sun-java6-bin ,並切換使用
更新-java-alternatives -s java-6-sun
但是,當我啟動tomcat時,記憶體不足,伺服器甚至無法啟動!如果我切換回 openJDK,一切都會再次正常。
我之前在這台伺服器上沒有任何記憶體問題,所以伺服器突然不能用sun的JDK啟動感覺很奇怪。
有人知道為什麼會發生這種情況嗎?我錯過了什麼嗎?
我自然在 tomcat 中設置了堆大小等。目前正在執行:
-Xms256m -Xmx1024m
如前所述,在openSDK中有效,在sun-jdk中記憶體不足…
編輯:伺服器是 64 位,openJDK 和 Sun 是 1.6.0,都是 64 位 JVM。
將回答我自己的問題,因為我最終想出了這個問題:
事實證明,我們已經設置了 xmx 和 xms,但是,我們沒有設置 -XX:MaxPermSize。
這個在 openJDK 中預設為 256mb,但在 SunJava 中只有 128mb。這是切換時造成的。
在 catalina.sh 中輸入 -XX:MaxPermSize=256m 後,在兩個 JVM 中都可以正常工作!