在網上找了一下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中。
由於時間的原因,沒有來得及試驗,呵呵,有空可以小試一把!