美文网首页
PermGen Space问题

PermGen Space问题

作者: MonkeySolider | 来源:发表于2020-05-23 16:49 被阅读0次

    最近做项目碰到了让我纠结的问题,tomcat服务器运行一段时间,总是会自动报异常:java.lang.OutOfmemoryError: PermGen Space 的错误,导致项目无法正常运行。

    介绍:

    PermGen Space:指的是内存的永久保存区,该块内存主要是被JVM用来存放 class 和 mete 信息的,当 class 被加载 loader 的时候就会被存储到该内存区中,与存放类的实例的heap区不同,java中的 垃圾回收器GC 不会在主程序运行期对 PermGen space 进行清理。

    原因:

    当我们的应用中有很多的class时,很可能就会出现PermGen space的错误。

    我们的 tomcat 在重启的时候,不是使用的 ./bin/shutdown.sh 而是使用 kill -9 xxx 直接杀掉,这样的话,存在 PermGen space 里面的内存不会被释放的,这样多长进行 kill 之后,就会导致系统的内存被渐渐吃完了,直到最后 tomcat 报错。

    解决方法:

    • 第一种方法:修改tomcat/bin目录下的catalina.bat。
      在“rem ----- Execute The Requested Command ----------------------”下加入
    JAVA_OPTS="-server -Xms800m -Xmx800m -XXNewSize=256M -XX:PermSize=256M -XX:MaxNewSize=512m -XX:MaxPermSize=512m"
    

    这种方法在只使用tomcat时管用,但使用IDEA时不管用。

    • 第二种方法:修改IDEA的Run Configurations。
      点击“Run”-"Run Configurations",在打开的窗口中点击“Arguments”选项卡。
      在VM arguments中内容最下边输入:
    -Xms256m -Xmx512m -XX:MaxNewSize=256m -XX:MaxPermSize=256m
    

    保存后再次重启后已经不再报错了。

    相关文章

      网友评论

          本文标题:PermGen Space问题

          本文链接:https://www.haomeiwen.com/subject/hallahtx.html