内存不足:Java堆空间,但在查看堆空间时,它最大使用50 MB

时间:2010-03-09 15:43:10

标签: java heap out-of-memory

我正在使用ASANT来运行指向NARS.jar文件的xml文件。 (我没有NARS.jar的项目文件)

我收到了“java.lang.OutOfMemoryError:Java堆空间。

我在运行NARS.jar时使用VisualVM来查看堆,它说它最大使用50 MB的堆空间。

我已将堆空间的初始和最大大小设置为512 MB。

有没有人有可能出错的想法?​​

我有1 GB的物理内存并创建了一个5 GB的页面文件(用于测试目的)。

提前致谢。

3 个答案:

答案 0 :(得分:1)

您的应用可能正在尝试分配超过512米限制的内存,因此即使只使用了50米,您也会看到一个内存错误。为了测试这个,我会设置:

-Xms512m -Xmx1024m

看看会发生什么。我也会尝试一个较小的测试文件,比如1g。继续减小文件大小,直到您看到错误。如果你成功了,那么麻烦的是你要做的事情以及你尝试做的方式需要太多的记忆。是时候寻找替代方法了。

答案 1 :(得分:0)

您在运行NARS.jar文件时是否正在执行该过程?设置ANT_OPTS只会对运行ant系统的VM产生影响。如果使用java任务启动/分叉其他VM进程,则不会继承ANT_OPTS设置。

如果是这种情况,请在java任务中设置fork =“false”(如果您没有使用任何其他需要启用fork的选项),或者设置maxmemory =“512m”。

答案 2 :(得分:0)

XML文件是臭名昭着的内存占用,因为DOM表示通常需要十倍于磁盘大小。

我的猜测是,这是你达到极限的地方。是否存在内存不足的堆栈跟踪?