当已经指定了最大堆值时,是否有解决“Java堆空间”内存错误的解决方法?

时间:2013-09-29 13:29:50

标签: java memory-management weka

我正在运行一个WEKA分类器(J48,其输入.arff文件由3个字段组成,字段1具有~27k个不同的属性,字段2~500k值),最新一代Macbook Pro具有8GB RAM。 我使用-Xmx parameter

将Java堆空间增加到最大值
  

java -Xmx7G -cp weka-3-6-10 / weka.jar weka.classifiers.trees.J48 -t   myfiles / loc_linear.arff -i

然而,当我运行分类器(大约10分钟后)后,我收到错误“线程中的异常”主“java.lang.OutOfMemoryError:Java堆空间”。

显然,我的输入文件只有8GB RAM是不够的。这是否意味着唯一的解决方案是拥有更强大的硬件(例如16GB RAM或非常强大的服务器/集群)? 这个问题会有解决方法吗? (例如,减少输入文件?如果是,您认为在减少中适用的标准是什么?)。还有其他想法或建议吗?

2 个答案:

答案 0 :(得分:5)

如果您在Mac OS X计算机上运行Weka GUI,则可以编辑plist配置文件。我从Weka邮件列表中跟踪了instructions

  1. cd到/Applications/weka-XXX.app/Contents,或者安装了weka可执行文件的地方。

  2. 那里会有一个名为Info.plist的文件。我建议您将该文件的副本保存到其他位置,因为您需要在下一步中对其进行更改。

  3. 在您喜欢的文本编辑器中打开weka-XXX.app/Contents/Info.plist(XML)文件,然后查找显示“VMOptions”的块。应该有一个值为“-Xmx256M”的值,它指定内存。将该值更改为更大的值,例如“-Xmx1024M”。

  4. 启动Weka。

答案 1 :(得分:0)

从您引用的代码行看来,您似乎是从简单的命令行界面运行Weka。如果是这种情况,则答案与此[问题](Increase heap to avoid Out of Memory Error in WEKA。)

相同

您无法从命令行界面增加堆大小。相反,我认为你应该按照Weka的instructions

中的说明增加 RunWeka.ini文件中的堆大小。