PermGen space的全称是Permanent Generation space,是指内存的永久保存区域OutOfMemoryError: PermGen(永久代) space从表面上看就是内存益出,解决方法也一定是加大内存。说说为什么会内存益出:这一部分用于存放Class和Meta的信息,Class在被 Load的时候被放入PermGen space区域,它和和存放Instance的Heap区域不同,GC(Garbage Collection)不会在主程序运行期对PermGen space进行清理,所以如果你的APP会LOAD很多CLASS的话,就很可能出现PermGen space错误。这种错误常见在web服务器对JSP或者java类进行pre compile的时候。
改正方法:
1.点击eclipse上的debug图标旁边的下拉箭头
2.然后选择Run Configurations,
3.系统弹出设置tomcat配置页面,在Argument中末尾添加参数中的VM arguments中追加:
-Xms256m -Xmx256m -XX:MaxNewSize=256m -XX:MaxPermSize=256m
参数的意思
-vmargs:说明后面是VM的参数
-Xms40m:虚拟机占用系统的最小内存
-Xmx256m:虚拟机占用系统的最大内存
-XX:PermSize:最小栈内存大小。一般报内存不足时,都是说这个太小,堆空间剩余小于5%就会警告,建议把这个稍微设大一点,不过要视自己机器内存大小来设置
-XX:MaxPermSize:最大栈内存大小。这个也适当大些
-Xmx512M的5%为25.6M,理论上要求-Xmx的数值与-XX:MaxPermSize必须大于25.6M