在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。
-startu
openFile
-showsplash
//...
-XX:MaxPermSize=512m
-Xms512m
-Xmx1024m
//...
-Xdock:icon=../Resources/Eclipse.icns
-XstartOnFirstThread
PS eclipse.ini位于Eclipse安装文件夹中。
参考文献
翻译自: https://mkyong.com/eclipse/eclipse-java-lang-outofmemoryerror-java-heap-space/
所有评论(0)