Java.lang.OutOfMemoryError: PermGen space问题解决

  • Post author:
  • Post category:java


1、


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




版权声明:本文为weigao_easy原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。