paulwong

          OutOfMemoryError : PermGen space

          tomcat 出現(xiàn) OutOfMemoryError : PermGen space

          最近在把在 tomcat 5.5 上開發(fā)的項目 deploy 到 JBoss 4.2 上時,在操作一段時間就會出現(xiàn) java.lang.OutOfMemoryError: PermGen space,開始以為是代碼中存在死循環(huán)的地方造成這樣的問題,但是后來發(fā)現(xiàn),出問題的地方都是隨機的,并不是某一處造成這樣的問題出現(xiàn),懷疑是內存泄 露,通過增大 heap 內存的方法來嘗試,依然不行,但是同樣的問題卻并沒有在 tomcat 中出現(xiàn)過,難道是 JBoss 的問題?

          在網(wǎng)上做了一番搜索得到一些相關的內容。

          PermGen space的全稱是Permanent Generation space,是指內存的永久保存區(qū)域OutOfMemoryError: PermGen space從表面上看就是內存益出,解決方法也一定是加大內存。說說為什么會內存益出:這一部分用于存放Class和Meta的信息,Class在被 Load的時候被放入PermGen space區(qū)域,它和和存放Instance的Heap區(qū)域不同,GC(Garbage Collection)不會在主程序運行期對PermGen space進行清理,所以如果你的APP會LOAD很多CLASS的話,就很可能出現(xiàn)PermGen space錯誤。這種錯誤常見在web服務器對JSP進行pre compile的時候。

          改正方法,在 run.bat 中加入:-Xms256m -Xmx512m -XX:MaxNewSize=256m -XX:MaxPermSize=256m

          因為項目中引用了很多的 jar 包,而這些 jar 包中的 class 信息會被 JBoss 的 class loader 加載到 PermGen space 區(qū)域,在 JVM 默認的情況下,該部分空間的大小只有 4M,在 jar 包非常多的情況下,顯然是不夠用的,所以通過 -XX:MaxPermSize=256m 指定最大值后即可解決問題。

          另外,如果 heap 內存不足出現(xiàn) java.lang.OutOfMemoryError: Java heap space 時,可以通過 -Xmx512m 指定最大 heap 內存來解決這樣的問題。

          posted on 2012-02-21 17:14 paulwong 閱讀(358) 評論(0)  編輯  收藏 所屬分類: 性能優(yōu)化

          主站蜘蛛池模板: 富裕县| 大理市| 石渠县| 乌兰察布市| 玉屏| 平利县| 常德市| 穆棱市| 荃湾区| 昌邑市| 称多县| 博罗县| 永顺县| 武邑县| 科技| 恩施市| 上林县| SHOW| 贡山| 昌吉市| 永平县| 凭祥市| 巴中市| 威海市| 如东县| 铜陵市| 伽师县| 什邡市| 忻州市| 上思县| 苏州市| 长武县| 宜黄县| 赞皇县| 潜江市| 陆良县| 乌拉特中旗| 景洪市| 娄烦县| 明水县| 凤台县|