项目运行时,有时遇到java.lang.OutOfMemoryError: PermGen space问题。
原因分析
PermGen space,全称是Permanent Generation space,指的是内存中的永久区域。 当java中间件启动时,会将相关的jar包和.class加载到永久区域,而用就区域的空间是固定的,虽然可以设置。报这个错的原因就是在启动加载.class时,永久区域溢出了。
项目具体分析
由于项目涉及中间件很多,在项目启动时需要进行中间件的类加载操作,造成永久区的OOM。
解决方案
开发过程中默认配置分配的空间不足。服务器部署一般内存很大,同样情况下没有出现OutOfMemoryError异常。所以本地开发需要修改jvm的参数。
配置
IDE使用的是idea,需要加入jvm启动参数:
-server -XX:PermSize=128M -XX:MaxPermSize=256m