增加堆以避免 WEKA 中的内存不足错误

Posted

技术标签:

【中文标题】增加堆以避免 WEKA 中的内存不足错误【英文标题】:Increase heap to avoid Out of Memory Error in WEKA 【发布时间】:2013-10-04 17:39:58 【问题描述】:

我正在尝试在 WEKA 中运行分类器,使用 J48 分类器,使用以下命令行:

$ java -Xmx2048m -cp /home/weka-3-7-9/weka.jar weka.classifiers.trees.J48 -t input.arff -i -k -d J48-data.model &

虽然我 arff 的大小是 43.8 M,并且我将堆空间增加到 2048m, 我仍然收到以下错误:

Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
    at java.util.ArrayList.<init>(ArrayList.java:132)
    at weka.core.Instances.initialize(Instances.java:196)
    at weka.core.Instances.<init>(Instances.java:177)
    at weka.classifiers.trees.j48.ClassifierSplitModel.split(ClassifierSplitModel.java:252)
    at weka.classifiers.trees.j48.ClassifierTree.buildTree(ClassifierTree.java:159)
    at weka.classifiers.trees.j48.C45PruneableClassifierTree.buildClassifier(C45PruneableClassifierTree.java:126)
    at weka.classifiers.trees.J48.buildClassifier(J48.java:249)
    at weka.classifiers.evaluation.Evaluation.evaluateModel(Evaluation.java:1485)
    at weka.classifiers.Evaluation.evaluateModel(Evaluation.java:649)
    at weka.classifiers.AbstractClassifier.runClassifier(AbstractClassifier.java:297)
    at weka.classifiers.trees.J48.main(J48.java:1062)

有人知道我做错了什么吗?或者可以指出一个不同的解决方案来增加堆?

提前谢谢你。

【问题讨论】:

【参考方案1】:

Weka 的 instructions 声明“-Xmx...”命令无法从简单的命令行界面运行。我相信您应该通过编辑 RunWeka.ini 文件来增加堆大小。我提供的链接应该为您指明正确的方向。

【讨论】:

【参考方案2】:

Ubuntu 用户快速说明:可以通过使用您喜欢的编辑器更改文件 /usr/bin/weka 中的行 MEMORY="256m" 来设置堆。

【讨论】:

【参考方案3】:

在终端使用这个命令

sudo gedit /usr/bin/weka

更改行中的大小

MEMORY="256m"

【讨论】:

以上是关于增加堆以避免 WEKA 中的内存不足错误的主要内容,如果未能解决你的问题,请参考以下文章

使用 VisualVm 分析堆转储时出现内存不足错误

使用大型数据结构时,避免 Java(eclipse) 中的“内存不足错误”?

由于堆大小增加,android中的内存不足错误

避免位图内存不足错误的建议

内存不足怎么办

Ruby 分块创建 tar 球以避免内存不足错误