tomcat出現java.lang.OutOfMemoryError: PermGen space問題解決

穩定了很久的tomcat今天拋出了一個異常,java.lang.OutOfMemoryError: PermGen space。

在網上找了一下PermGen space的作用,這部分空間用於存放Class和Meta的信息,Class在被 Load的時候被放入PermGen space區域,它和和存放Instance的Heap區域不同,GC(Garbage Collection)不會在主程序運行期對PermGen space進行清理,所以如果應用LOAD很多CLASS的話,就很可能出現PermGen space錯誤。

解決辦法:

修改TOMCAT_HOME/bin/catalina.sh
在“echo "Using CATALINA_BASE:   $CATALINA_BASE"”上面加入以下行:
JAVA_OPTS="-server -XX:PermSize=64M -XX:MaxPermSize=128m

 

網上有人建議:將相同的第三方jar文件移置到tomcat/shared/lib目錄下,這樣可以達到減少jar 文檔重複佔用內存的目的。呵呵,這個貌似適合老版本的tomcat,因爲tomcat6就沒有shared這個目錄。我覺得這位網友的建議很好,不過在現有的tomcat下新增一個lib目錄,需要修改一下tomcat相關的腳本,要將shared這個目錄的jar放到classpath中。

由於時間的原因,沒有來得及試驗,呵呵,有空可以小試一把!

發佈了26 篇原創文章 · 獲贊 5 · 訪問量 25萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章