PermGen space的全稱是Permanent Generation space,是指內(nèi)存的永久保存區(qū)域,這塊內(nèi)存主要是被JVM存放Class和Meta信息的,Class在被Loader時(shí)就會(huì)被放到PermGen space中,它和存放類實(shí)例(Instance)的Heap區(qū)域不同,GC(Garbage Collection)不會(huì)在主程序運(yùn)行期對(duì) PermGen space進(jìn)行清理,所以如果你的應(yīng)用中有很多CLASS的話,就很可能出現(xiàn)PermGen space錯(cuò)誤,這種錯(cuò)誤常見在web服務(wù)器對(duì)jsp進(jìn)行PRe compile的時(shí)候,常兇的web服務(wù)器指Tomcat、Jetty、JBoss等。如果你的WEB APP下都用了大量的第三方j(luò)ar, 其大小超過了jvm默認(rèn)的大?。?M)那么就會(huì)產(chǎn)生此錯(cuò)誤信息了。
PermGen space不夠用時(shí),通常都會(huì)報(bào)java.lang.OutOfMemoryError錯(cuò)誤。
這里以Tomcat為例,解決方法: 手動(dòng)設(shè)置MaxPermSize大小修改TOMCAT_HOME/bin/catalina.sh 在“echo “Using CATALINA_BASE: $CATALINA_BASE””上面加入以下行: JAVA_OPTS=”-server -XX:PermSize=64M -XX:MaxPermSize=128m”
也可以在IDE里設(shè)置default vm arguments
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注