eclipse 下调试和运行,每每会出现调整java.lang.OutOfMemoryError: Java heap space
产生的缘由我猜想是使用了maven,subversion,mylar,wtp等插件,还有就是大文件,对象的操做致使,具体缘由还不肯定。
在网上找了找相关资料,找到了解决办法:方法(1)操做后没有起做用,不过能够参考其中查看内存的技巧 .具体解决看方法(2),(3)
一 、在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
对于permgen space:
在eclipse.ini中指定参数:
-permsize
256m
-maxpermsize
784m java
二 、修改jdk 使用内存(此方法可行) tomcat
找到eclispe 中window->preferences->Java->Installed JRE ,点击右侧的Edit
按钮,在编辑界面中的 “Default VM Arguments ”选项中,填入以下值便可。 eclipse
-Xms64m -Xmx128m maven
3、 修改Run Configurations (此方法可行) 测试
在代码上右键,依次点击“Run As ”-> “Run Configurations ”,在Arguments 参数中的“VM arguments:
”中填入以下值便可。 ui
-Xms64m -Xmx128m spa
4、 查询当前JVM 内存代码 插件
下面是查询当前JVM 内存大小的代码,能够测试以上设置后JVM 的内存是否会变化。增长JVM 内存的配置项后,无需从新启动eclipse
。具体的代码以下: debug
public class TestMemory {
public static void main(String[] args) { 调试
System. out .println( " 内存信息 :" + toMemoryInfo ());
}
public static String toMemoryInfo() {
Runtime currRuntime = Runtime.getRuntime ();
int nFreeMemory = ( int ) (currRuntime.freeMemory() / 1024 /
1024);
int nTotalMemory = ( int ) (currRuntime.totalMemory() / 1024 /
1024);
return nFreeMemory + "M/" + nTotalMemory + "M(free/total)" ;
}
}
也能够把工程发布成war包部署到存在管理控制台host-manager的tomcat下.进入控制台选择status查看内存的使用状况.
设置好了,实际运行的结果能够经过Eclipse中“Help”-“About Eclipse SDK”窗口里面的“Configuration Details”按钮进行查看。还有一个办法能够在eclipse中看到当前heap size的分配和使用状况,还能够强制执行垃圾回收。 在eclipse的快捷方式上点击右键,在目标栏添加参数: -debug options -vm javaw.exe 而后,在eclipse根目录下,新建一个名为options的文件,不要后缀名。在该文件中加入内容: org.eclipse.ui/perf/showHeapStatus=true 重启eclipse,就能够在eclipse的左下角看到当前heap size的使用状况和分配状况了,还能够手工执行垃圾回收,看heap size不够时就来一次。