报错(内存溢出):Exception in thread "Thread-8" java.lang.OutOfMemoryError: PermGen space

Exception in thread "Thread-8" java.lang.OutOfMemoryError: PermGen space

解决办法:

“能正常使用,但是偶尔会报下面这个错误”

从偶尔这个说法来看,是你热部署次数太多了,导致JVM的 永久区(PermGen) 内存溢出。

或者可以将永久区调大点:
  -XX:MaxPermSize=256m


但更大的内存也只能让你热部署次数增加点,所以再溢出就干脆就重启系统了。


热部署也包括你编译后动态调试的这种情况。



当然如果你确认没有做过任何热部署的话,那么你就面临两种情况了:
1、jar包确实太多,所有class定义最终都会被装载 PermGen,结果溢出了;
2、滥用static来存储大数据,比如用static做缓存,结果缓存越来越大,结果溢出了。


你必须知道 永久区 跟你用 -Xmx512m 所设置的内存,完全不是一个东西;JVM对其用法也完全不同。

猜你喜欢

转载自blog.csdn.net/qq_34266804/article/details/88165509