【问题标题】:Increase heap size in java for weka在 Java 中为 weka 增加堆大小
【发布时间】:2012-01-29 13:43:11
【问题描述】:

我正在尝试为不断崩溃的 weka 增加 Java 中的堆大小。我使用了建议的行:

> java -Xmx500m -classpath

但我收到以下错误:

-classpath requires class path specification

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

【问题讨论】:

    标签: java memory jvm weka


    【解决方案1】:

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

    所以,不仅仅是:

    java weka.core.Instances data/soybean.arff
    

    你会的:

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

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

    【讨论】:

      【解决方案2】:

      你需要在-classpath之后指定一个类路径,类似于PATH这个环境变量你需要指定Java可以找到类的路径。

      -Xmx500m 设置看起来不错,除了我建议使用 512m。

      【讨论】:

      • 类似:java -Xmx512m -c:\Program Files(x86)\Java ?
      • 你不需要为 Java 库设置一个类路径,只需要你自己的类,所以如果你编译的类在工作目录中,它可能是java -Xmx512m -classpath .。或者将它们编译成 jar 文件,然后执行 java `-Xmx512m -classpath c:\path\to\your\jarfile.jar'
      【解决方案3】:

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

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

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

      【讨论】:

      • 那么您在运行 weka.jar 时也可以从命令行更改最大堆大小。是一样的
      • Weka 的更新版本接受-m 选项。所以你可以运行weka -m 2g
      • 对于 3.8 版我添加了 maxheap=5000m,我在 Help >> SystemInfo memory.max 中看不到变化。如果在此级别更改,它也不会反映。
      【解决方案4】:

      我在 Windows 中运行 Weka 3.6。这就是我所做的。 进入Weka安装目录,你会发现一个RunWeka.bat文件。在文本编辑器中打开此文件并在 java 命令行中添加 -Xmx 参数。

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

      【讨论】:

        【解决方案5】:

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

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

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

        【讨论】:

          【解决方案6】:

          在终端中运行此命令:

          java -Xmx1024m -jar weka.jar
          

          【讨论】:

            【解决方案7】:

            对于 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】:

              Weka 官方的回答是对的..但是..关键是首先摆脱所有 JVM 文件并安装相关的 32 位或 64 位 Java 版本。不使用相关版本会导致许多问题,包括无法将堆增加超过 1024m(通过更改 ini 文件)。

              【讨论】:

                【解决方案9】:

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

                【讨论】:

                  【解决方案10】:

                  使用此命令的最佳方法

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

                  【讨论】:

                    【解决方案11】:

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

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

                    JAVA_OPTS = -Xms30000m -Xmx30000m
                    

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

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

                    希望对某些人有所帮助。

                    【讨论】:

                      【解决方案12】:

                      如果您在 Windows 上使用 Weka 3.8.1,您可以通过编辑 javaOpts 参数为自己省去很多麻烦。 maxheap这个参数已经不用了,所以你可以在RunWeka.ini文件中这样设置javaOpts

                      javaOpts= -Xmx1040m
                      

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

                      请注意文件区分大小写。

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

                      编辑:如果你想让 Weka 在 windows 上使用超过 1gb,你需要安装 JDK。普通的 JRE 不会这样做。

                      【讨论】:

                        【解决方案13】:

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

                        <string>-Xss50M</string>
                        

                        【讨论】:

                          【解决方案14】:

                          如果我们使用 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和Help>>SystemInfo验证相同

                          【讨论】:

                            【解决方案15】:

                            Weka 3.9.2 也不再提供 maxheap 选项。 RunWeka.ini 有 javaOpts 的选项,所以你可以把下面的改成你需要的内存分配,

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

                            这里的 1024m 是您要分配的自定义内存量。

                            【讨论】:

                              【解决方案16】:

                              如果你从命令行而不是通过 java 运行 weka,即在命令行中输入 weka,而不是输入

                              weka
                              

                              指定内存标志

                              weka -m 1024m
                              

                              这将指定 1024 兆字节。

                              【讨论】:

                                【解决方案17】:

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

                                sh weka.sh -memory 10g
                                

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

                                【讨论】:

                                  猜你喜欢
                                  • 2014-05-13
                                  • 2020-11-24
                                  • 2010-12-06
                                  • 2012-12-07
                                  • 2013-01-26
                                  • 2022-11-21
                                  • 2012-07-14
                                  • 1970-01-01
                                  相关资源
                                  最近更新 更多