为weka增加java中的堆大小

时间:2011-12-29 00:15:42

标签: java memory jvm weka

我正在尝试增加java中的堆大小,以防止崩溃。我使用了建议的行:

> java -Xmx500m -classpath

但是我收到以下错误:

-classpath requires class path specification

我不确定这意味着什么。有什么建议吗?

17 个答案:

答案 0 :(得分:21)

我发现实际问题出现在'RunWeka.ini'的{​​{1}}文件中。我用记事本打开它,在文件中间有一行'\Program Files (x86)\Weka-3-6'

我将该行更改为读取'maxheap = 512m',保存文件并重新加载weka,这解决了我的问题。

我不确定这是否是正确的做法,但它对我有用。

答案 1 :(得分:11)

省略-classpath选项。仅使用-Xmx500m选项。

所以,而不仅仅是:

java weka.core.Instances data/soybean.arff
你这样做:

java -Xmx500m weka.core.Instances data/soybean.arff

如果您通过某些脚本运行weka(例如RunWeka.bat),那么您需要修改该脚本(使用一些文本编辑器,如记事本)。

答案 2 :(得分:11)

在终端中运行此命令:

java -Xmx1024m -jar weka.jar

答案 3 :(得分:8)

如果您在Windows上使用Weka 3.8.1,则可以通过编辑javaOpts参数来省去很多麻烦。参数maxheap已不再使用,因此您可以在 RunWeka.ini 文件中设置javaOpts

javaOpts= -Xmx1040m

其中1040m是您要分配的内存量。

请注意该文件区分大小写。

有很多方法可以设置它,但这是让Weka在这个版本的Windows环境中运行的更快方法。

编辑:如果您希望Weka在Windows上使用超过1gb,则需要安装JDK。常规JRE不会这样做。

答案 4 :(得分:5)

官方Weka答案(适用于所有操作系统和Weka版本)可在http://weka.wikispaces.com/OutOfMemoryException找到。

如果您在Windows上使用最新的Weka版本,the answer是:

  

修改maxheap文件中的RunWeka.ini参数。

答案 5 :(得分:3)

您需要在-classpath之后指定一个类路径,类似于您需要指定Java可以找到类的路径所需的PATH env变量。

-Xmx500m设置看起来不错,但我建议使用512米。

答案 6 :(得分:3)

在Ubuntu上我遇到了同样的问题 但我通过增加用于Java虚拟机的内存量来解决它  运行这个:weka -m 1024m

答案 7 :(得分:3)

对于Mac OS,您必须编辑配置文件以增加Weka UI应用程序的堆大小。

我正在重复我写的:Is there a workaround to solve "Java heap space" memory error when the max heap value has been already specified?

  1. 如果Weka正在运行,请退出。

  2. cd到/Applications/weka-XXX.app/Contents,或者安装了weka可执行文件的地方。那里会有一个名为Info.plist的文件。它是一个XML文本文件。我建议您将其副本保存到其他位置,因为您需要在下一步中对其进行编辑。

  3. 在您喜欢的文本编辑器中打开Info.plist(XML)文件,然后查找显示“VMOptions”的块。应该有一个值为“-Xmx256M”或类似specifies the maximum heap size的值。您应该将该值更改为更大的值,例如“-Xmx1024M”。

  4. 启动Weka。

答案 8 :(得分:1)

官方的Weka答案是正确的......但是......至关重要的是首先摆脱所有JVM文件并安装相关的32或64位Java版本。不使用相关版本会导致许多问题,包括不可能将堆增加到1024m以上(通过更改ini文件)。

答案 9 :(得分:1)

我在Windows中运行Weka 3.6。这就是我做的。 转到Weka安装目录,您将找到RunWeka.bat文件。在文本编辑器中打开此文件,并在java命令行中添加-Xmx参数。

例如这设置为4GB内存, %_java%-Xmx4096m -classpath。 RunWeka -i。\ RunWeka.ini -w。\ weka.jar -c%_cmd%“%2”

答案 10 :(得分:1)

Weka 3.9.2也没有maxheap选项了。 RunWeka.ini可以选择javaOpts,因此您可以将以下内容更改为所需的内存分配,

javaOpts=%JAVA_OPTS%   ---- > javaOpts= -Xmx1024m

此处1024m是您要分配的自定义内存量。

答案 11 :(得分:0)

使用此命令执行此操作的最佳方法

    java -Xmx1024m -[weka classifier] -t [training file path]

答案 12 :(得分:0)

上面的答案太旧了(最后一个是1年前)。 我在Windows 10上的 WEKA(版本3.8.1)也遇到了同样的问题。

我有一个更新堆大小的问题,我修复它的方法是添加一个环境变量(在控制面板下),如下所示:

JAVA_OPTS = -Xms30000m -Xmx30000m

提示:只需确保RunWeka.ini正在使用此环境变量。

在上面的示例中,我给了WEKA 30GB。有用。

希望它对某些人有所帮助。

答案 13 :(得分:0)

您还应该看看默认的线程堆栈大小是否足够20MB。在文件/Applications/weka-3-8-1-oracle-jvm.app/Contents/Info.plist(在MAC上)将值增加到50MB,如下所示:

<string>-Xss50M</string>

答案 14 :(得分:0)

  

如果我们使用Weka Workbench CLI或Knowledge explorer,我们需要   改变如下。

正如文档所示,运行时参数应为-Xmx [size_required] m,其中[size_required]是您打算保留的内存大小,以避免内存异常。

打开RunWeka.ini

  

定义maxheap = [size_required] G

在我的情况下,我保持maxheap = 4G,可以设置为maxheap = 4096m,将-Xmx#maxheap#添加到#setups (前缀为“cmd_”)部分的所有运行选项到java命令 如下所示

cmd_default=javaw -Xmx#maxheap# ...............
cmd_console=cmd.exe /K start cmd.exe ..................
cmd_explorer=java -Xmx#maxheap# .................
cmd_knowledgeFlow=java -Xmx#maxheap#....................

maxheap=4G

通过重新启动Weka和帮助&gt;&gt; SystemInfo

来验证相同内容

答案 15 :(得分:0)

如果您是从命令行而不是通过Java运行weka的,即在命令行中输入weka而不是

weka

指定内存标志

weka -m 1024m

这将指定1024兆字节。

答案 16 :(得分:0)

如果通过weka.sh运行weka,则可以直接使用memory选项运行它。 例如,

{
  "query": {
    "bool": {
      "filter": [
        {
          "terms": {
            "t": [
              "hello"
            ]
          }
        },
        {
          "knn": {
            "my_vector2": {
              "vector": [
                2,
                3,
                5,
                6
              ],
              "k": 2
            }
          }
        }
      ]
    }
  },
  "_source": [
    "t"
  ]
}

这会将堆大小增加到10Gb(在Ubuntu 18.04上使用Weka 3.8.4测试)