内存溢出 Java



我认为我的 Java 程序超出了允许的内存使用量......这是 Eclipse 中显示的错误:

 Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
    at Main.main(Main.java:228)

在尝试具有更好内存处理的实现之前,有没有办法基本上增加要为程序分配的内存?我希望看到程序终止并至少显示结果。

您可以使用

-Xmx 标志为进程分配更多内存:

java -Xmx2G YourProgram

将为进程分配 2 GB 的内存。

您可以在 Eclipse 中执行此操作,方法是转到运行配置、参数部分并将-Xmx 2G添加到虚拟机参数

增加内存大小是好的,但您还应该考虑到您的程序可能存在一些内存泄漏,您真的应该为此烦恼。

您可以使用

cmd行标志增加堆大小

例如:

java -Xmx6g myprogram

您可以通过键入 java -X 来获取完整列表(或几乎完整的列表)。

由于我认为您的程序没有使用那么多内存,因此我怀疑您的程序在某处存在内存泄漏。
如果你能给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的任何解释,我在获取"Java 堆空间"和"内存不足"时参考 Eclipse 内存设置

快乐编码:) - 查理

最新更新