几天前,我开始在MATLAB启动时遇到java.lang.OutOfMemoryError: Java heap space
异常 - 在我运行任何代码或向路径添加任何内容之前。 MATLAB加载的默认目录也没有文件。
我在Windows 7 64位上运行MATLAB R2012a。
导致这种情况的原因是什么?
答案 0 :(得分:1)
参考此How do I increase the heap space for the Java VM in MATLAB 6.0 (R12) and later versions?
的修改
-Xms
设置堆的初始大小。更改此设置不会对java.lang.OutOfMemory
错误产生任何影响。使用的选项是-Xmx
,它设置堆的最大大小。 See here for details.
答案 1 :(得分:1)
使用java -Xmx -Xms option
启动您的申请
提供 -
-Xmx <number> : max memory allocation to app
-Xms <number> : Min memory at startup
答案 2 :(得分:1)
要在更新版本的Matlab中设置-Xmx
参数,请转到偏好设置(在工具栏/功能区上),然后
MATLAB > General > Java Heap Memory
那里有一个滑块。必须重新启动Matlab才能生效。
但是有warning:
注意:增加Java堆大小会减少内存量 可用于在数组中存储数据。
我想这意味着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。