簡體   English   中英

為weka增加java中的堆大小

[英]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 堆空間”內存錯誤的解決方法?

  1. 如果 Weka 正在運行,請退出它。

  2. cd 進入 /Applications/weka-XXX.app/Contents ,或者你的 weka 可執行文件的安裝位置。 那里會有一個名為Info.plist的文件。 它是一個 XML 文本文件。 我建議您將其副本保存到其他位置,因為您需要在下一步中對其進行編輯。

  3. 在您喜歡的文本編輯器中打開Info.plist (XML) 文件並查找顯示“VMOptions”的塊。 應該有一個值表示“-Xmx256M”或類似的值,用於指定最大堆大小 您應該將該值更改為更大的值,例如“-Xmx1024M”。

  4. 啟動威卡。

在 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM