java.lang.OutOfMemoryError: PermGen space,
PermGen space的全稱是Permanent Generation space,是指內(nèi)存的永久保存區(qū)域。這一部分用于存放Class和Meta的信息,Class在被 Load的時候被放入PermGen space區(qū)域,
它和和存放Instance的Heap區(qū)域不同,GC(Garbage Collection)不會在主程序運(yùn)行期對PermGen space進(jìn)行清理,所以如果你的APP會LOAD很多CLASS的話,就很可能出現(xiàn)PermGen space錯誤。
這種錯誤常見在web服務(wù)器對JSP進(jìn)行pre compile的時候。
改正方法,在 run.bat 中加入:-Xms512m -Xmx1024m -XX:MaxNewSize=256m -XX:MaxPermSize=256m
因為項目中引用了很多的 jar 包,而這些 jar 包中的 class 信息會被 JBoss 的 class loader 加載到 PermGen space 區(qū)域,在 JVM 默認(rèn)的情況下,該部分空間的大小只有 4M,在 jar 包非常多的情況下,顯然是不夠用的,所以通過 -XX:MaxPermSize=256m 指定最大值后即可解決問題。
而當(dāng)出現(xiàn)出現(xiàn)java.lang.OutOfMemoryError: Java heap space 這個異常時,通過調(diào)節(jié)-Xms512m -Xmx1024m這個就可以解決。
另外,這個兩個參數(shù) -XX:+UseParallelGC -XX:+UseParallelOldGC 讓服務(wù)并行回收內(nèi)存空間。但是,這兩個參數(shù)配置上去以后,也會占用一定的內(nèi)存空間。
本文轉(zhuǎn)自博客 http://m.tkk7.com/fiele/archive/2009/07/27/288609.html