几天前,我在启动MATLAB时遇到了一个java.lang.OutOfMemoryError: Java heap space
异常 - 在运行任何代码或将任何内容添加到路径之前。 MATLAB加载的默认目录也没有文件。
我正在运行Windows 7 64位上的MATLAB R2012a。
可能是什么原因导致这种情况发生?
几天前,我在启动MATLAB时遇到了一个java.lang.OutOfMemoryError: Java heap space
异常 - 在运行任何代码或将任何内容添加到路径之前。 MATLAB加载的默认目录也没有文件。
我正在运行Windows 7 64位上的MATLAB R2012a。
可能是什么原因导致这种情况发生?
使用java -Xmx -Xms选项
启动您的应用程序,提供-
-Xmx <number> : max memory allocation to app
-Xms <number> : Min memory at startup
java -Xmx1800m
将以最大内存分配1.8GB的设置启动JVM。默认情况下,JVM以-Xmx256m启动。 - Parker如果您想在较新版本的Matlab中设置-Xmx
参数,请前往首选项(位于工具栏/功能区上),然后
MATLAB > General > Java Heap Memory
那里有一个滑块。为了使其生效,Matlab将不得不重新启动。
然而,有一个 警告:
注意:增加Java堆大小会减少用于存储数组数据的内存量。
我猜这意味着Matlab不会在其Java堆空间中存储数组。但是,如果我们只是设置上限,这是否重要?我认为不是。具体来说,当我将上述滑块设置为36 GB时,Matlab启动并立即将其虚拟内存(如top
所示)增加到39.9 GB。但物理内存使用量仅约为300 MB。因此,除非它实际上将某些东西放入该堆空间中,否则将没有更少的物理内存可用于例如数组。因此,看起来可以忽略此警告。
~/.matlab/R2016a/matlab.prf
中,因此您也可以手动执行此操作。JavaMemHeapMax=I36532
matlab.prf
文件,请检查此处。请参考如何在MATLAB 6.0(R12)及更高版本中增加Java VM的堆空间?
编辑
-Xms
设置堆的初始大小。更改此设置不会对java.lang.OutOfMemory
错误产生影响。应使用的选项是-Xmx
,它设置堆的最大大小。有关详细信息,请参见此处。