Exception in thread "Thread-8" java.lang.OutOfMemoryError: PermGen space
解决办法:
“能正常使用,但是偶尔会报下面这个错误”
从偶尔这个说法来看,是你热部署次数太多了,导致JVM的 永久区(PermGen) 内存溢出。
或者可以将永久区调大点:
-XX:MaxPermSize=256m
但更大的内存也只能让你热部署次数增加点,所以再溢出就干脆就重启系统了。
热部署也包括你编译后动态调试的这种情况。
当然如果你确认没有做过任何热部署的话,那么你就面临两种情况了:
1、jar包确实太多,所有class定义最终都会被装载 PermGen,结果溢出了;
2、滥用static来存储大数据,比如用static做缓存,结果缓存越来越大,结果溢出了。
你必须知道 永久区 跟你用 -Xmx512m 所设置的内存,完全不是一个东西;JVM对其用法也完全不同。