[英]Increase heap size in java for weka
我正在嘗試為不斷崩潰的weka增加java中的堆大小。 我使用了建議的行:
> java -Xmx500m -classpath
但我收到以下錯誤:
-classpath requires class path specification
我不確定這意味着什么。 有什么建議么?
我發現實際問題出在'\\Program Files (x86)\\Weka-3-6'
中的文件'RunWeka.ini'
中。 我用記事本打開它,在文件中間有一行'maxheap = 512m'
。
我將行更改為'maxheap=2000m'
,保存文件並重新加載 weka,這解決了我的問題。
我不確定這是否是正確的方法,但它對我有用。
在終端中運行此命令:
java -Xmx1024m -jar weka.jar
省略-classpath
選項。 僅使用-Xmx500m
選項。
所以,而不僅僅是:
java weka.core.Instances data/soybean.arff
你做:
java -Xmx500m weka.core.Instances data/soybean.arff
如果您通過某個腳本(例如 RunWeka.bat)運行 weka,那么您需要修改該腳本(使用一些文本編輯器,如記事本)。
如果您在 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 版本,答案是:
修改
RunWeka.ini
文件中的maxheap
參數。
對於 Mac OS,您必須編輯配置文件以增加 Weka UI 應用程序的堆大小。
我在重復我寫的內容: 當已經指定了最大堆值時,是否有解決“Java 堆空間”內存錯誤的解決方法?
如果 Weka 正在運行,請退出它。
cd 進入 /Applications/weka-XXX.app/Contents ,或者你的 weka 可執行文件的安裝位置。 那里會有一個名為Info.plist
的文件。 它是一個 XML 文本文件。 我建議您將其副本保存到其他位置,因為您需要在下一步中對其進行編輯。
在您喜歡的文本編輯器中打開Info.plist
(XML) 文件並查找顯示“VMOptions”的塊。 應該有一個值表示“-Xmx256M”或類似的值,用於指定最大堆大小。 您應該將該值更改為更大的值,例如“-Xmx1024M”。
啟動威卡。
在 Ubuntu 上,我遇到了同樣的問題,但我通過增加用於 Java 虛擬機運行的內存量來解決它:weka -m 1024m
您需要在-classpath
之后指定一個類路徑,類似於您需要指定 Java 可以找到類的路徑的PATH
變量。
-Xmx500m
設置看起來不錯,只是我建議使用 512m。
我在 Windows 中運行 Weka 3.6。 這就是我所做的。 轉到 Weka 安裝目錄,您將找到一個 RunWeka.bat 文件。 在文本編輯器中打開此文件並在 java 命令行中添加 -Xmx 參數。
例如,這設置為 4GB 內存, %_java% -Xmx4096m -classpath 。 RunWeka -i .\\RunWeka.ini -w .\\weka.jar -c %_cmd% "%2"
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 年前)。 我的WEKA(版本 3.8.1)在 Windows 10 上遇到了同樣的問題。
我在更新堆大小時遇到問題,我修復它的方法是添加一個環境變量(在控制面板下),如下所示:
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# 添加到 # setups (以“cmd_”為前綴)部分旁邊的所有運行選項中,如下所示
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 兆字節。
如果您通過 weka.sh 運行 weka,則可以直接使用 memory 選項運行它。 例如,
sh weka.sh -memory 10g
這會將堆大小增加到 10Gb(在 Ubuntu 18.04 上使用 Weka 3.8.4 測試)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.