我正在尝试增加java中的堆大小,因为weka会不断崩溃。我使用了建议的行:
> java -Xmx500m -classpath
但是我收到以下错误:
-classpath requires class path specification
我不确定这意味着什么。有什么建议?
我发现实际问题出现在'RunWeka.ini'
的'\Program Files (x86)\Weka-3-6'
文件中。我用记事本打开它,在文件中间有一行'maxheap = 512m'
。
我改变了行读取'maxheap=2000m'
,保存文件并重新加载weka,这解决了我的问题。
我不确定这是否是正确的方法,但它对我有用。
官方的Weka答案是正确的......但是....至关重要的是首先摆脱所有JVM文件并安装相关的32或64位Java版本。不使用相关版本会导致许多问题,包括不可能将堆增加到1024m以上(通过更改ini文件)。
Weka 3.9.2也没有maxheap选项了。 RunWeka.ini可以选择javaOpts,因此您可以将以下内容更改为所需的内存分配,
javaOpts=%JAVA_OPTS% ---- > javaOpts= -Xmx1024m
这里1024m是您要分配的自定义内存量。
使用此命令执行此操作的最佳方法
java -Xmx1024m -[weka classifier] -t [training file path]
上面的答案太旧了(最后一个是1年前)。我在Windows 10上遇到了与WEKA(版本3.8.1)相同的问题。
我有一个更新堆大小的问题,我修复它的方法是添加一个环境变量(在控制面板下),如下所示:
JAVA_OPTS = -Xms30000m -Xmx30000m
提示:只需确保RunWeka.ini正在使用此环境变量。
在上面的例子中,我给了WEKA 30GB。有用。
希望它对某些人有所帮助。
您还应该看到默认的线程堆栈大小是否足够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#添加到#signs(前缀为“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但不通过java运行,即在命令行中键入weka
,而不是键入
weka
指定内存标志
weka -m 1024m
这将指定1024兆字节。
省略-classpath
选项。使用-Xmx500m
选项。
所以,而不仅仅是:
java weka.core.Instances data/soybean.arff
你做:
java -Xmx500m weka.core.Instances data/soybean.arff
如果您通过某些脚本运行weka(例如RunWeka.bat),那么您需要修改该脚本(使用一些文本编辑器,如记事本)。
在终端中运行此命令:
java -Xmx1024m -jar weka.jar
如果你在Windows上使用Weka 3.8.1,你可以通过编辑javaOpts
参数来省去很多麻烦。参数maxheap
不再使用,因此您可以在RunWeka.ini文件中设置javaOpts
:
javaOpts= -Xmx1040m
其中1040m
是您要分配的内存量。
请注意该文件区分大小写。
有很多方法可以设置它,但这是让Weka在这个版本的Windows环境中运行的更快方法。
编辑:如果您希望Weka在Windows上使用超过1gb
,则需要安装JDK。常规JRE不会这样做。
官方的Weka答案(适用于所有操作系统和Weka版本)可以在http://weka.wikispaces.com/OutOfMemoryException上找到。
如果您在Windows上使用最近的Weka版本,the answer是:
修改
maxheap
文件中的RunWeka.ini
参数。
您需要在-classpath
之后指定一个类路径,类似于PATH
env变量,您需要指定Java可以找到类的路径。
-Xmx500m
设置看起来很好,除了我建议使用512米。
对于Mac OS,您必须编辑配置文件以增加Weka UI应用程序的堆大小。
Info.plist
的文件。它是一个XML文本文件。我建议您将其副本保存到其他位置,因为您需要在下一步中对其进行编辑。Info.plist
(XML)文件,然后查找一个显示“VMOptions”的块。应该有一个值为“-Xmx256M”的值或与specifies the maximum heap size类似的值。您应该将该值更改为更大的值,例如“-Xmx1024M”。在Ubuntu上我有同样的问题,但我通过增加用于Java虚拟机的内存量来解决它运行:weka -m 1024m
我在Windows中运行Weka 3.6。这就是我所做的。转到Weka安装目录,您将找到RunWeka.bat文件。在文本编辑器中打开此文件,并在java命令行中添加-Xmx参数。
例如,这设置为4GB内存,%_ java%-Xmx4096m -classpath。 RunWeka -i。\ RunWeka.ini -w。\ weka.jar -c%_cmd%“%2”