PermGen Space问题

2020-05-23  本文已影响0人  MonkeySolider

最近做项目碰到了让我纠结的问题,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 报错。

解决方法:

JAVA_OPTS="-server -Xms800m -Xmx800m -XXNewSize=256M -XX:PermSize=256M -XX:MaxNewSize=512m -XX:MaxPermSize=512m"

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

-Xms256m -Xmx512m -XX:MaxNewSize=256m -XX:MaxPermSize=256m

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

上一篇 下一篇

猜你喜欢

热点阅读