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