生產環境:jdk1.6和tomcat6,部署瞭3個項目,而且用到大量的第三方jar包。在部署第四個項目的時候,運行瞭一天,第四個項目拋出java.lang.OutOfMemoryError:PermGen space。
拋出異常java.lang.OutOfMemoryError: PermGen space 。網上查找資料,解釋為:
PermGen space的全稱是Permanent Generation space,是指內存的永久保存區域,這塊內存主要是被JVM存放Class和Meta信息的,Class在被Loader時就會被放到PermGen space中,它和存放類實例(Instance)的Heap區域不同,GC(Garbage Collection)不會在主程序運行期對PermGen space進行清理,所以如果你的應用中有很多CLASS的話,就很可能出現PermGen space錯誤,這種錯誤常見在web服務器對JSP進行pre compile的時候。如果你的WEB APP下都用瞭大量的第三方jar, 其大小超過瞭jvm默認的大小(4M)那麼就會產生此錯誤信息瞭。
解決方法:手動設置MaxPermSize大小。網上多為修改配置文件的方式。我的操作系統是windows xp, 用tomcat本身提供的工具(Configure Tomcat)就可以設置。如下圖所示,在java options中加入紅色方框中的兩行語句即可。通過命令行參數-XX:PermSize和-XX:MaxPermSize設置該區域的大小,數值應根據機器實際內存大小來定。註:每行命令前後不要有空格,否則會導致tomcat啟動失敗。
作者“張偉雄的博客”