http://www.wujianrong.com/archives/2006/12/javalangoutofmemoryerror_permg.html
PermGen space的全稱(chēng)是Permanent Generation space,是指內(nèi)存的永久保存區(qū)域
OutOfMemoryError: PermGen space從表面上看就是內(nèi)存益出,解決方法也一定是加大
內(nèi)存。說(shuō)說(shuō)為什么會(huì)內(nèi)存益出:這一部分用于存放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í)候。
改正方法:-Xms256m -Xmx256m -XX:MaxNewSize=256m -XX:MaxPermSize=256m
這里以tomcat環(huán)境為例,其它WEB服務(wù)器如jboss,weblogic等是同一個(gè)道理。
一、java.lang.OutOfMemoryError: PermGen space
PermGen space的全稱(chēng)是Permanent Generation space,是指內(nèi)存的永久保存區(qū)域,
這塊內(nèi)存主要是被JVM存放Class和Meta信息的,Class在被Loader時(shí)就會(huì)被放到PermGen
space中,
它和存放類(lèi)實(shí)例(Instance)的Heap區(qū)域不同,GC(Garbage Collection)不會(huì)在主程序運(yùn)
行期對(duì)
PermGen space進(jìn)行清理,所以如果你的應(yīng)用中有很多CLASS的話,就很可能出現(xiàn)PermGen
space錯(cuò)誤,
這種錯(cuò)誤常見(jiàn)在web服務(wù)器對(duì)JSP進(jìn)行pre compile的時(shí)候。如果你的WEB APP下都用了大
量的第三方j(luò)ar, 其大小
超過(guò)了jvm默認(rèn)的大小(4M)那么就會(huì)產(chǎn)生此錯(cuò)誤信息了。
解決方法: 手動(dòng)設(shè)置MaxPermSize大小
修改TOMCAT_HOME/bin/catalina.sh
在“echo "Using CATALINA_BASE:?? $CATALINA_BASE"”上面加入以下行:
JAVA_OPTS="-server -XX:PermSize=64M -XX:MaxPermSize=128m
建議:將相同的第三方j(luò)ar文件移置到tomcat/shared/lib目錄下,這樣可以達(dá)到減少
jar 文檔重復(fù)占用內(nèi)存的目的。
posted on 2007-03-15 11:56
Lib 閱讀(7113)
評(píng)論(1) 編輯 收藏 所屬分類(lèi):
Java