【发布时间】:2012-01-29 13:43:11
【问题描述】:
我正在尝试为不断崩溃的 weka 增加 Java 中的堆大小。我使用了建议的行:
> java -Xmx500m -classpath
但我收到以下错误:
-classpath requires class path specification
我不确定这意味着什么。有什么建议吗?
【问题讨论】:
我正在尝试为不断崩溃的 weka 增加 Java 中的堆大小。我使用了建议的行:
> java -Xmx500m -classpath
但我收到以下错误:
-classpath requires class path specification
我不确定这意味着什么。有什么建议吗?
【问题讨论】:
省略-classpath 选项。只使用-Xmx500m 选项。
所以,不仅仅是:
java weka.core.Instances data/soybean.arff
你会的:
java -Xmx500m weka.core.Instances data/soybean.arff
如果您通过某个脚本(例如 RunWeka.bat)运行 weka,那么您需要修改该脚本(使用一些文本编辑器,如记事本)。
【讨论】:
你需要在-classpath之后指定一个类路径,类似于PATH这个环境变量你需要指定Java可以找到类的路径。
-Xmx500m 设置看起来不错,除了我建议使用 512m。
【讨论】:
java -Xmx512m -classpath .。或者将它们编译成 jar 文件,然后执行 java `-Xmx512m -classpath c:\path\to\your\jarfile.jar'
我发现实际问题出在'\Program Files (x86)\Weka-3-6' 中的文件'RunWeka.ini' 中。我用记事本打开它,文件中间有一行'maxheap = 512m'。
我将行更改为读取'maxheap=2000m',保存文件并重新加载weka,这解决了我的问题。
我不确定这是否是正确的做法,但它对我有用。
【讨论】:
-m 选项。所以你可以运行weka -m 2g。
我在 Windows 中运行 Weka 3.6。这就是我所做的。 进入Weka安装目录,你会发现一个RunWeka.bat文件。在文本编辑器中打开此文件并在 java 命令行中添加 -Xmx 参数。
例如,这设置为 4GB 内存, %_java% -Xmx4096m -classpath 。 RunWeka -i .\RunWeka.ini -w .\weka.jar -c %_cmd% "%2"
【讨论】:
Weka 官方答案(适用于所有操作系统和 Weka 版本)可以在 http://weka.wikispaces.com/OutOfMemoryException 上找到。
如果您在 Windows 上使用最新的 Weka 版本,the answer 是:
修改
RunWeka.ini文件中的maxheap参数。
【讨论】:
在终端中运行此命令:
java -Xmx1024m -jar weka.jar
【讨论】:
对于 Mac OS,您必须编辑配置文件以增加 Weka UI 应用程序的堆大小。
如果 Weka 正在运行,请退出它。
cd 进入 /Applications/weka-XXX.app/Contents ,或安装您的 weka 可执行文件的任何位置。那里会有一个名为Info.plist 的文件。它是一个 XML 文本文件。我建议您将其副本保存到另一个位置,因为您需要在下一步中对其进行编辑。
在您最喜欢的文本编辑器中打开 Info.plist (XML) 文件,然后查找显示“VMOptions”的块。应该有一个值表示“-Xmx256M”或类似于specifies the maximum heap size 的值。您应该将该值更改为更大的值,例如“-Xmx1024M”。
启动 Weka。
【讨论】:
Weka 官方的回答是对的..但是..关键是首先摆脱所有 JVM 文件并安装相关的 32 位或 64 位 Java 版本。不使用相关版本会导致许多问题,包括无法将堆增加超过 1024m(通过更改 ini 文件)。
【讨论】:
在 Ubuntu 上我遇到了同样的问题 但我通过增加用于 Java 虚拟机的内存量来解决它 运行这个:weka -m 1024m
【讨论】:
使用此命令的最佳方法
java -Xmx1024m -[weka classifier] -t [training file path]
【讨论】:
上面的答案太旧了(最后一个是 1 年前)。 我的 WEKA(版本 3.8.1) 在 Windows 10 上遇到了同样的问题。
我在更新堆大小时遇到问题,我修复它的方法是添加一个环境变量(在控制面板下),如下所示:
JAVA_OPTS = -Xms30000m -Xmx30000m
提示:只需确保 RunWeka.ini 使用此环境变量即可。
在上面的例子中,我给了 WEKA 30GB。有用。
希望对某些人有所帮助。
【讨论】:
如果您在 Windows 上使用 Weka 3.8.1,您可以通过编辑 javaOpts 参数为自己省去很多麻烦。 maxheap这个参数已经不用了,所以你可以在RunWeka.ini文件中这样设置javaOpts:
javaOpts= -Xmx1040m
其中1040m 是您要分配的内存量。
请注意文件区分大小写。
有很多设置方法,但这是让 Weka 在此版本的 Windows 环境中运行的更快方法。
编辑:如果你想让 Weka 在 windows 上使用超过 1gb,你需要安装 JDK。普通的 JRE 不会这样做。
【讨论】:
您还应该查看默认线程堆栈大小 20MB 是否足够。将文件 /Applications/weka-3-8-1-oracle-jvm.app/Contents/Info.plist(在 MAC 上)中的值增加到 50MB,如下所示:
<string>-Xss50M</string>
【讨论】:
如果我们使用 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验证相同
【讨论】:
Weka 3.9.2 也不再提供 maxheap 选项。 RunWeka.ini 有 javaOpts 的选项,所以你可以把下面的改成你需要的内存分配,
javaOpts=%JAVA_OPTS% ---- > javaOpts= -Xmx1024m
这里的 1024m 是您要分配的自定义内存量。
【讨论】:
如果你从命令行而不是通过 java 运行 weka,即在命令行中输入 weka,而不是输入
weka
指定内存标志
weka -m 1024m
这将指定 1024 兆字节。
【讨论】:
如果你通过 weka.sh 运行 weka,你可以直接使用内存选项运行它。 例如,
sh weka.sh -memory 10g
这会将堆大小增加到 10Gb(在 Ubuntu 18.04 上使用 Weka 3.8.4 测试)
【讨论】: