当前位置: 代码迷 >> Ruby/Rails >> MyEclipse中启动出现java.lang.OutOfMemoryError: PermGen space有效解决办法
  详细解决方案

MyEclipse中启动出现java.lang.OutOfMemoryError: PermGen space有效解决办法

热度:229   发布时间:2016-04-29 02:13:37.0
MyEclipse中启动出现java.lang.OutOfMemoryError: PermGen space有效解决方法

? ? ? ?最近在做毕设时,出现了这样一个问题,MyEclipse重新部署项目到Tomcat上时,总是报这样一个错误:
Exception in thread "ContainerBackgroundProcessor[StandardEngine[Catalina]]";
java.lang.OutOfMemoryError:PermGen space
在网上查找资料发现,这是MyEclipse内存不够的原因。
? ? ? ?PermGen space的全称是Permanent Generation space,是指内存的永久保存区域, 这块内存主要是被JVM存放Class和Meta信息的,Class在被Loader时就会被放到PermGen space中, 它和存放类实例(Instance)的Heap区域不同,GC(Garbage Collection)不会在主程序运行期对 PermGen space进行清理,所以如果你的应用中有很多CLASS的话,就很可能出现PermGen space错误, 这种错误常见在web服务器对JSP进行pre compile的时候。如果你的WEB APP下都用了大量的第三方jar, 其大小超过了jvm默认的大小(4M)那么就会产生此错误信息了。
? ? ? ?网上大多数资料的解决方法基本上都是修改TOMCAT_HOME/bin/catalina.bat文件的内容,具体修改方法下文会给出。很多人可能会发现,修改过catalina.bat文件的内容,但是依旧会出现内存溢出这样的错误。这是因为修改这个文件只有在用批处理程序启动Tomcat服务器时才有效,如果启动Tomcat是通过MyEclipse启动服务器的话,需要在MyEclipse里面同样设置内存大小。

? ? ? 解决方法:

? ? ? ?一、手动设置MaxPermSize大小修改TOMCAT_HOME/bin/catalina.bat(windows系统)或者catalina.sh(unix系统)在“echo "Using CATALINA_BASE: $CATALINA_BASE"”上面加入以下行:set JAVA_OPTS=%JAVA_OPTS% -server -XX:PermSize=256M -XX:MaxPermSize=512m

?

? ? ?二、如果启动Tomcat的时候是通过MyEclipse启动服务器的话,需要在MyEclipse里面同样设置内存大小

?

这个问题令我懊恼了不少时间,起初在百度查找相关资料时,只是搜索关键字错误信息,发现很多文章提供的解决方法不够全面都不能解决,后面在错误信息前加上MyEclipse时(搜索关键字:MyEclipse Caused by: java.lang.OutOfMemoryError: PermGen space)终于找到了可行的解决方案,这应该也算是一个查找资料的小技巧吧。

?

参考:http://www.9ht.com/xue/2556.html

  相关解决方案