我认为我的Java程序超出了允许的内存使用量......这是Eclipse中出现的错误:
Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
at Main.main(Main.java:228)
在尝试使用更好的内存处理之前,有没有什么方法可以基本上增加为程序分配的内存?我希望看到程序终止并至少显示结果。
答案 0 :(得分:1)
您可以使用cmd-line标志
增加堆大小例如:
java -Xmx6g myprogram
您可以通过输入java -X来获得完整列表(或者几乎完整列表)。
答案 1 :(得分:1)
您可以使用-Xmx
标志为进程分配更多内存:
java -Xmx2G YourProgram
将为进程分配2 GB的内存。
您可以在Eclipse中执行此操作,方法是转到运行配置,参数部分,并将-Xmx 2G
添加到 VM参数
答案 2 :(得分:1)
增加内存大小是好的,但你也应该考虑到你的程序可能有一些内存泄漏,你真的应该为此烦恼。
答案 3 :(得分:0)
由于我不认为你的程序使用了那么多内存,我怀疑你的程序在某个地方有内存泄漏。
如果您可以Main.java:200
直到Main.java:250
我们可以检查是否有任何泄漏。
如果您确定您的程序正在使用该内存量,则可以运行
命令提示符(Windows)或终端(Mac OS X或Linux)中的java -Xmx2G -jar foo.jar
或者,如果您在Linux下在Eclipse中运行程序,请执行以下操作:
1)确保Eclipse已关闭
2)在eclipse.ini
文件中打开您喜欢的文本编辑器(默认位置:/usr/lib/eclipse/eclipse.ini
)
3)搜索--Xmx512M
并增加此数字(即--Xmx2G
)
4)保存文件并重新启动Eclipse
有关--Xmx
和--Xms
的任何解释,请参阅Eclipse memory settings when getting "Java Heap Space" and "Out of Memory"
快乐编码:) -Charlie