在Eclipse IDE中,如果您的程序正在消耗大量内存(加载大数据),如下所示:

List<Domain> list = domainBo.findAllDomain(100000);
		
  for(Domain domain : list){
	process(domain.getDomainName());
  }

它可以很容易地命中java.lang.OutOfMemoryError: Java heap space

Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
	at java.util.HashMap.<init>(HashMap.java:209)
	at java.util.LinkedHashMap.<init>(LinkedHashMap.java:181)

1.解决方案– VM参数

在Eclipse菜单上,单击Run -> Run Configurations.. ,选择要运行的Java应用程序,在Arguments选项卡上单击,使用以下选项更新VM参数。

-Xms<size> - Set initial Java heap size
-Xmx<size> - Set maximum Java heap size

例如, -Xms512M -Xmx1024M

内存溢出

2.错误– eclipse.ini

eclipse.ini的内存设置仅分配给Eclipse IDE,而不分配给您要运行的程序。 一个很常见的错误是更新eclipse.ini的堆大小,并期望它能够解决上述内存不足的问题。

注意
Java应用程序,Ant / Maven构建脚本或单元测试用例从Eclipse作为外部工具运行,并且不继承eclipse.ini中的VM设置。

但是,如果Eclipse IDE总是无故崩溃,则可以尝试在eclipse.ini增加堆大小和perm gen。

/Users/mkyong/Downloads/eclipse/Eclipse.app/Contents/MacOS/eclipse.ini
-startu
	openFile
	-showsplash
        //...
	-XX:MaxPermSize=512m
	-Xms512m
	-Xmx1024m
        //...
	-Xdock:icon=../Resources/Eclipse.icns
	-XstartOnFirstThread

PS eclipse.ini位于Eclipse安装文件夹中。

参考文献

  1. 常见问题解答如何增加Eclipse可用的permgen大小?
  2. 找出您的Java堆内存大小
  3. Eclipse + Tomcat – Java.Lang.OutOfMemoryError:Java堆空间

翻译自: https://mkyong.com/eclipse/eclipse-java-lang-outofmemoryerror-java-heap-space/

Logo

技术共进,成长同行——讯飞AI开发者社区

更多推荐