我正在使用ASANT来运行指向NARS.jar文件的xml文件。 (我没有NARS.jar的项目文件)
我收到了“java.lang.OutOfMemoryError:Java堆空间。
我在运行NARS.jar时使用VisualVM来查看堆,它说它最大使用50 MB的堆空间。
我已将堆空间的初始和最大大小设置为512 MB。
有没有人有可能出错的想法?
我有1 GB的物理内存并创建了一个5 GB的页面文件(用于测试目的)。
提前致谢。
答案 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表示通常需要十倍于磁盘大小。
我的猜测是,这是你达到极限的地方。是否存在内存不足的堆栈跟踪?