eclipse运行报java.lang.OutOfMemoryError: PermGen space解决方法

Posted jepson6669

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了eclipse运行报java.lang.OutOfMemoryError: PermGen space解决方法相关的知识,希望对你有一定的参考价值。

解决这个问题之前,我们先来了解一下什么是PermGen space

PermGen space的全称是Permanent Generation space,是指内存的永久保存区域OutOfMemoryError: PermGen space从表面上看就是内存益出,解决方法也一定是加大内存。

说说为什么会内存益出
(1)这一部分用于存放Class和Meta的信息,Class在被 Load的时候被放入PermGen space区域,它和和存放Instance的Heap区域不同。
(2) GC(Garbage Collection)不会在主程序运行期对PermGen space进行清理,所以如果你的APP会LOAD很多CLASS的话,就很可能出现PermGen space错误。这种错误常见在web服务器对JSP进行pre compile的时候。

如果你的WEB APP下都用了大量的第三方jar,其大小超过了jvm默认的大小(4M)那么就会产生此错误信息了。
建议:将相同的第三方jar文件移置到tomcat/shared/lib目录下,这样可以减少jar 文档重复占用内存

 

第一步:双击tomcat服务器->Overview->Open lauch configuration -->Arguments

也可以通过下面的方式打开上面的界面:

点击“Run” – “Run Configurations…”,选中Tomcat Server,进入Arguments分页

第二步:修改VM arguments 配置,加入提升初始分配空间的参数

-Xms256m -Xmx1024m -XX:PermSize=256m -XX:MaxPermSize=256M 

参数的解释

-Xms256m : 表示虚拟机占用系统的最小内存为256M。

-Xmx1024m :表示虚拟机占用系统的最大内存为1024M.

-XX:PermSize:最小堆大小。一般报内存不足时,都是说这个太小,堆空间剩余容量小于5%就会警告,建议把这个稍微设大一点,视自己机器内存大小来设置

-XX:MaxPermSize:最大堆大小。这个也适当大些

 

 

补充知识点

Linux下如何修改JVM内存大小

要添加在tomcat 的bin 下catalina.sh 里,位置cygwin=false前 。注意引号要带上,红色的为新添加的.

# OS specific support. $var _must_ be set to either true or false.
JAVA_OPTS="-Xms256m -Xmx512m -Xss1024K -XX:PermSize=128m -XX:MaxPermSize=256m"
cygwin=false

 

以上是关于eclipse运行报java.lang.OutOfMemoryError: PermGen space解决方法的主要内容,如果未能解决你的问题,请参考以下文章

eclipse运行一个类却运营另外一个类,报无法加载的类

eclipse 运行报java.lang.OutOfMemoryError: PermGen space解决方法

eclipse启动报错

eclipse运行maven项目报错java.lang.ClassNotFoundException: xxxxxx

eclipse中使用maven插件的时候,运行tomcat7:run的时候报错

IntelliJ IDEA运行eclipse的web项目报错的问题