Tomcat

切換JVM後Tomcat OutOfMemory

  • November 1, 2012

我有一個在 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 中都可以正常工作!

引用自:https://serverfault.com/questions/436610