最近在公司老是碰到out of memory error, 一天重启eclipse好多次,被郁闷得要死。
如果启动了jetty的话,不一会就会有permgen space out of memory异常。
产生的原因我猜测是使用了maven,subversion,mylar,wtp等插件,具体原因还不确定。
在网上找了找相关资料,暂时找到一些解决方法,但并没有完全解决问题:
(1)在eclipse根目录,找到eclipse.ini,在其中指定初始heap size和最大heap size:
-xms 64M
-xmx 256M
其中, -xms是初始heap size, -xmx 是最大heap size。
在实际使用过程中,我发现我一启动eclipse时,heap size使用大概是40m,多时可以达到128m,所以我的设置是
-xms 64m
-xmx 128m
(2)对于permgen space:
在eclipse.ini中指定参数:
-permsize 256m
-maxpermsize 784m
因为我用的是jetty,设置之后感觉出现permgen space的间隔长了不少,但是还是会出现。具体的值设置为多大,我现在还没有弄清楚,在tomcat中好像有别的地方可以设置。
(3)有一个办法可以在eclipse中看到当前heap size的分配和使用情况,还可以强制执行垃圾回收。
在eclipse的快捷方式上点击右键,在目标栏添加参数:
-debug options -vm javaw.exe
然后,在eclipse根目录下,新建一个名为options的文件,不要后缀名。在该文件中加入内容:
org.eclipse.ui/perf/showHeapStatus=true
重启eclipse,就可以在eclipse的左下角看到当前heap size的使用情况和分配情况了,还可以手工执行垃圾回收,看heap size不够时就来一次。
参考文章:http://www.yuanma.org/data/2006/0925/article_1590.htm