1.PermGen space简介
PermGen space的全称是Permanent Generation space,是指内存的永久保存区域OutOfMemoryError: PermGen space从表面上看就是内存益出,解决方法也一定是加大内存。
2.内存益出原因:
2.1:这一部分用于存放Class和Meta的信息,Class在被 Load的时候被放入PermGen space区域,它和和存放Instance的Heap区域不同。
2.2:GC(Garbage Collection)不会在主程序运行期对PermGen space进行清理,所以如果你的APP会LOAD很多CLASS的话,就很可能出现PermGen space错误。这种错误常见在web服务器对JSP进行pre compile的时候。
2.3如果你的WEB APP下都用了大量的第三方jar,其大小超过了jvm默认的大小(4M)那么就会产生此错误信息了。
建议:将相同的第三方jar文件移置到tomcat/shared/lib目录下,这样可以减少jar 文档重复占用内存
3.window下eclipse环境web项目,解决方案
3.1双击配置的Tomcat
3.2点击Open launch configuration
3.3选择Argunments,在VM arguments中加入参数,即可
-Xms256m -Xmx512m -XX:PermSize=256m -XX:MaxPermSize=256M
3.直接运行war包在Tomcat中
Windows系统下,修改tomcat\bin\catalina.bat,在“echo Using CATALINA_BASE: "%CATALINA_BASE%"”上面加入以下行:
set JAVA_OPTS=%JAVA_OPTS% -server -XX:PermSize=128M -XX:MaxPermSize=512m
4.在linux下部署的时候要修改catalina.sh
JAVA_OPTS=”$JAVA_OPTS -server -Xms1536m -Xmx1536m -XX:PermSize=256m -XX:MaxPermSize=512m”
本文参考:http://blog.youkuaiyun.com/cuker919/article/details/45246073