内存溢出:报错java.lang.OutOfMemoryError: PermGen space

发布时间 2023-04-08 09:04:02作者: 李勇888

前言

  前后台调试过程中某个查询操作导致了后台报错java.lang.OutOfMemoryError: PermGen space,百度了一下说是内存溢出,设置JVM参数就能解决,确实是如此。

  引用别人的解释:

  • OutOfMemoryError: PermGen space 非堆溢出(永久保存区域溢出) 
    这种错误常见在web服务器对JSP进行pre compile的时候。如果你的WEB APP下都用了大量的第三方jar, 其大小超过了jvm默认的大小(4M)那么就会产生此错误信息了。如果web app用了大量的第三方jar或者应用有太多的class文件而恰好MaxPermSize设置较小,超出了也会导致这块内存的占用过多造成溢出,或者tomcat热部署时侯不会清理前面加载的环境,只会将context更改为新部署的,非堆存的内容就会越来越多。

  解决:

    设置JVM内存参数:

      -Xms256M -Xmx512M -XX:PermSize=256m -XX:MaxPermSize=512m