欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

java中程序上线报错: tomcat中java.lang.OutOfMemoryError: PermGen space

程序员文章站 2023-03-31 19:49:01
java中程序上线报错 tomcat中java.lang.OutOfMemoryError: PermGen space,异常处理 PermGen space的全称是Permanent Generation space,是指内存的永久保存区域,这块内存主要是被JVM存放Class和Meta信息的,... ......

 

在程序测试没问题之后,上线试运行,在运行的过程中某个功能一点击就报如下错,然后重启服务器就好了,一会又是如此,解决方法如下(亲测)

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)那么就会产生此错误信息了。 解决方法: 手动设置maxpermsize大小修改tomcat_home/bin/catalina.sh在

echo "using catalina_base:   $catalina_base"

上面加入以下行:

java_opts="-server -xx:permsize=64m -xx:maxpermsize=128m

个人建议:将相同的第三方jar文件移置到tomcat/shared/lib目录下,这样可以达到减少jar 文档重复占用内存的目的。