我正在尝试增加java中的堆大小,以防止崩溃。我使用了建议的行:
> java -Xmx500m -classpath
但是我收到以下错误:
-classpath requires class path specification
我不确定这意味着什么。有什么建议吗?
答案 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应用程序的堆大小。
如果Weka正在运行,请退出。
cd到/Applications/weka-XXX.app/Contents,或者安装了weka可执行文件的地方。那里会有一个名为Info.plist
的文件。它是一个XML文本文件。我建议您将其副本保存到其他位置,因为您需要在下一步中对其进行编辑。
在您喜欢的文本编辑器中打开Info.plist
(XML)文件,然后查找显示“VMOptions”的块。应该有一个值为“-Xmx256M”或类似specifies the maximum heap size的值。您应该将该值更改为更大的值,例如“-Xmx1024M”。
启动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测试)