几天前,我开始遇到一个java.lang.OutOfMemoryError: Java heap space
异常,在启动MATLAB之前 - 我运行任何代码或向路径添加任何内容。 MATLAB加载的默认目录也没有文件。java.lang.OutOfMemoryError:启动时的Java堆空间
我在Windows 7 64位上运行MATLAB R2012a。
这可能是什么原因造成的?
几天前,我开始遇到一个java.lang.OutOfMemoryError: Java heap space
异常,在启动MATLAB之前 - 我运行任何代码或向路径添加任何内容。 MATLAB加载的默认目录也没有文件。java.lang.OutOfMemoryError:启动时的Java堆空间
我在Windows 7 64位上运行MATLAB R2012a。
这可能是什么原因造成的?
转寄此How do I increase the heap space for the Java VM in MATLAB 6.0 (R12) and later versions? EDIT -Xms
设置初始大小堆。改变这个将不会对java.lang.OutOfMemory
错误产生影响。使用的选项是-Xmx
,其中设置了堆的最大大小。 See here for details.
开始使用java -Xmx -Xms option
提供您的应用程序 -
-Xmx <number> : max memory allocation to app
-Xms <number> : Min memory at startup
更具体地说:'java -Xmx1800m'将启动JVM,最大内存分配为1.8GB。如果不成立,JVM将以-Xmx256m开头。 – vallismortis 2015-06-17 04:01:30
设置在较新版本的Matlab的的-Xmx
参数,去首(工具栏/色带)
MATLAB > General > Java Heap Memory
,然后
那里有一个滑块。 Matlab将不得不重新启动才能生效。
有一个warning,但是:
Note: Increasing the Java heap size decreases the amount of memory available for storing data in arrays.
我想这意味着Matlab的不存储在它的Java堆空间阵列。但是,如果我们只是设定上限,这是否重要?我不这么认为。更具体地说,当我将上面的滑块设置为36 GB时,Matlab会启动并立即将其虚拟内存(如top
所示)变为39.9 GB。但物理内存使用量仅为300 MB左右。因此,除非它真的将某些东西放入堆空间,否则不会有较少的物理内存可用于例如阵列。所以看起来这个警告可以被忽略。
如果你只有通过终端到Matlab的非图形访问,上述命令的作用是将下面的行添加到~/.matlab/R2016a/matlab.prf
,因此你可以做到这一点手动来代替。
JavaMemHeapMax=I36532
在我用滑块将首选项设置为36,532 MB并退出Matlab后出现此行。如果找不到matlab.prf
文件,请检查here。
你在哪个平台上? – L0j1k 2013-02-25 12:02:11
@ L0j1k - 我在Windows 7上。我很难忘,我会将它添加到问题中。 – olamundo 2013-02-25 12:05:01