matlab中java.lang.outofmemoryError解決辦法
阿新 • • 發佈:2019-01-31
Matlab中呼叫weka時,常常出現Out of Memory現象,表明Java虛擬機器記憶體不夠用了.可以增加最大記憶體設定.
1. 查詢matlab根路徑.在matlab命令列中敲入:matlabroot
顯示根路徑,如:C:\Program Files\MATLAB\R2010a
2.檢視當前Java虛擬機器欲用的最大堆記憶體,即機器的總記憶體減去系統已經使用的記憶體, 敲入:java.lang.Runtime.getRuntime.maxMemory
檢視當前Java虛擬機器的總記憶體,敲入:java.lang.Runtime.getRuntime.totalMemory
檢視當前Java虛擬機器中仍可利用的自由記憶體:java.lang.Runtime.getRuntime.freeMemory
三者的關係是:maxMemory>totalMemory>freeMemory
3.檢視Java虛擬機器版本.敲入:version -java
4.在 $MATLAB\bin\$ARCH 路徑下新建java.opts檔案.
$MATLAB是根路徑,例如C:\MATLAB7
$ARCH是系統架構.例如win64,則在C:\Program Files\MATLAB\R2010a\bin\win64下新建java.opts檔案.
5.用記事本開啟java.opts檔案,
對於版本是1.2到1.5的Java虛擬機器,輸入:
-Xmx268435456
對於版本是1.1.8的JVM,輸入
maxHeapSize = 268435456
儲存.
這裡268435456是新設定的JVM的最大堆記憶體.可以改成其他值.
我的記憶體大小是10G,設定maxMemory為4G,即設定-Xmx4096m
6. 重啟matlab,敲入java.lang.Runtime.getRuntime.maxMemory
顯示最大記憶體改變,設定成功.
而其餘兩者沒有什麼改變.
注意: 在matlab->file->preference->General->Java Heap Memory,可以設定Java Heap Memory大小,其最大可以設定的值是記憶體大小的1/4。如果想用的Java Heap Memory大於記憶體的1/4,無法利用Preference進行設定。
採用上述在Matlab安裝目錄下新增java.opts的方法,可以任意設定Java Heap Memory的大小,當設定的大小小於記憶體的1/4時,Preference中Java Heap Memory面板顯示的是相應的值;當大於記憶體的1/4時,面板顯示值是其最大值,但實際上使用的卻是我們在java.opts中設定的大小。設定Java Heap Memory面板的主要目的是防止一些人任意改變,破壞作業系統.
整理自:
http://www.mathworks.com/support/solutions/data/1-18I2C.html?solution=1-18I2C
http://www.mathworks.com/support/solutions/data/1-19Z14.html?solution=1-19Z14
1. 查詢matlab根路徑.在matlab命令列中敲入:matlabroot
顯示根路徑,如:C:\Program Files\MATLAB\R2010a
2.檢視當前Java虛擬機器欲用的最大堆記憶體,即機器的總記憶體減去系統已經使用的記憶體, 敲入:java.lang.Runtime.getRuntime.maxMemory
檢視當前Java虛擬機器的總記憶體,敲入:java.lang.Runtime.getRuntime.totalMemory
檢視當前Java虛擬機器中仍可利用的自由記憶體:java.lang.Runtime.getRuntime.freeMemory
三者的關係是:maxMemory>totalMemory>freeMemory
3.檢視Java虛擬機器版本.敲入:version -java
4.在 $MATLAB\bin\$ARCH 路徑下新建java.opts檔案.
$MATLAB是根路徑,例如C:\MATLAB7
$ARCH是系統架構.例如win64,則在C:\Program Files\MATLAB\R2010a\bin\win64下新建java.opts檔案.
5.用記事本開啟java.opts檔案,
對於版本是1.2到1.5的Java虛擬機器,輸入:
-Xmx268435456
對於版本是1.1.8的JVM,輸入
maxHeapSize = 268435456
儲存.
這裡268435456是新設定的JVM的最大堆記憶體.可以改成其他值.
我的記憶體大小是10G,設定maxMemory為4G,即設定-Xmx4096m
6. 重啟matlab,敲入java.lang.Runtime.getRuntime.maxMemory
顯示最大記憶體改變,設定成功.
而其餘兩者沒有什麼改變.
注意: 在matlab->file->preference->General->Java Heap Memory,可以設定Java Heap Memory大小,其最大可以設定的值是記憶體大小的1/4。如果想用的Java Heap Memory大於記憶體的1/4,無法利用Preference進行設定。
採用上述在Matlab安裝目錄下新增java.opts的方法,可以任意設定Java Heap Memory的大小,當設定的大小小於記憶體的1/4時,Preference中Java Heap Memory面板顯示的是相應的值;當大於記憶體的1/4時,面板顯示值是其最大值,但實際上使用的卻是我們在java.opts中設定的大小。設定Java Heap Memory面板的主要目的是防止一些人任意改變,破壞作業系統.
整理自:
http://www.mathworks.com/support/solutions/data/1-18I2C.html?solution=1-18I2C
http://www.mathworks.com/support/solutions/data/1-19Z14.html?solution=1-19Z14