2024年5月7日发(作者:)
Tomcat7启动的时候报emoryError: PermGen space错
误
2014-7-17
一、 问题描述
Tomcat7下Webapp下同时放多个程序,启动的时候报
emoryError: PermGen space错误。
排查:放置单个程序,启动Tomcat看看是否成功,如果单个能够成功,则说明程序
没有问题,如果单个不能成功,先找出原因,保证单个程序能启动成功。
注意:对于Class文件较多的单个程序,启动Tomcat时也可能出现该错误。
二、 具体原因
PermGen space的全称是Permanent Generation space,是指内存的永久保存区域,
这块内存主要是被JVM存放Class和Meta信息的,Class在被Loader时就会被放到
PermGen space中,它和存放类实例(Instance)的Heap区域不同,GC(Garbage
Collection)不会在主程序运行期对PermGen space进行清理,所以如果你的应用中有很
多CLASS的话,就很可能出现PermGen space错误,这种错误常见在web服务器对JSP进
行pre compile的时候。如果你的WEB APP下都用了大量的第三方jar, 其大小超过了jvm
默认的大小(4M)那么就会产生此错误信息了。
三、 解决方法
➢ 绿色版的Tomcat(该方法没试过)
在tomcat_home/bin目录下找到,用文本编辑器打开,加上下面一行:
set JAVA_OPTS= -Xms1024M -Xmx1024M -XX:PermSize=256M
-XX:MaxNewSize=256M -XX:MaxPermSize=256M
解释一下各个参数:
-Xms1024M:初始化堆内存大小(注意,不加M的话单位是KB)
-Xmx1029M:最大堆内存大小
-XX:PermSize=256M:初始化类加载内存池大小
-XX:MaxPermSize=256M:最大类加载内存池大小
-XX:MaxNewSize=256M:这个还不清楚哈,有知道的说声
还有一个-server参数,是指启动jvm时以服务器方式启动,比客户端启动慢,但性
能较好,大家可以自己选择。
➢ 安装版的Tomcat(已经试过,能正常启动)
发布评论