我正在运行一个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或非常强大的服务器/集群)? 这个问题会有解决方法吗? (例如,减少输入文件?如果是,您认为在减少中适用的标准是什么?)。还有其他想法或建议吗?
答案 0 :(得分:5)
如果您在Mac OS X计算机上运行Weka GUI,则可以编辑plist配置文件。我从Weka邮件列表中跟踪了instructions。
cd到/Applications/weka-XXX.app/Contents,或者安装了weka可执行文件的地方。
那里会有一个名为Info.plist的文件。我建议您将该文件的副本保存到其他位置,因为您需要在下一步中对其进行更改。
在您喜欢的文本编辑器中打开weka-XXX.app/Contents/Info.plist(XML)文件,然后查找显示“VMOptions”的块。应该有一个值为“-Xmx256M”的值,它指定内存。将该值更改为更大的值,例如“-Xmx1024M”。
启动Weka。
答案 1 :(得分:0)
从您引用的代码行看来,您似乎是从简单的命令行界面运行Weka。如果是这种情况,则答案与此[问题](Increase heap to avoid Out of Memory Error in WEKA。)
相同您无法从命令行界面增加堆大小。相反,我认为你应该按照Weka的instructions
中的说明增加 RunWeka.ini文件中的堆大小。