matlab中java.lang.outofmemoryError解决办法

来源:互联网 发布:teradata数据库语法 编辑:程序博客网 时间:2024/06/11 18:59
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 0
原创粉丝点击