java.lang.OutOfMemoryError:启动时的Java堆空间
几天前,我开始在MATLAB启动时遇到java.lang.OutOfMemoryError: Java heap space
exception – 在我运行任何代码或向路径添加任何内容之前。 MATLAB加载的默认目录也没有文件。
我在Windows 7 64位上运行MATLAB R2012a。
可能是什么导致了这个?
请参阅此如何在MATLAB 6.0(R12)及更高版本中增加Java VM的堆空间? EDIT -Xms
设置堆的初始大小。 更改此项将不会对java.lang.OutOfMemory
错误产生任何影响。 使用的选项是-Xmx
,它设置堆的最大大小。 详情请见此处。
使用java -Xmx -Xms option
启动您的应用程序 –
-Xmx : max memory allocation to app -Xms : Min memory at startup
要在更新版本的Matlab中设置-Xmx
参数,请转到“首选项” (在工具栏/function区上),然后
MATLAB > General > Java Heap Memory
那里有一个滑块。 必须重新启动Matlab才能使其生效。
但是有一个警告 :
注意:增加Java堆大小会减少可用于在arrays中存储数据的内存量。
我想这意味着Matlab不会在其Java堆空间中存储数组。 但是,如果我们只是设定上限,这是否重要? 我不这么认为。 更具体地说,看看当我将上面的滑块设置为36 GB时会发生什么,Matlab启动并立即启动其虚拟内存(如上图所示)达到39.9 GB。 但物理内存使用仅约300 MB。 因此,除非它实际上在堆空间中放置了某些东西,否则例如arrays可用的物理内存不会减少。 所以看起来这个警告可以被忽略。
如果您只通过终端对Matlab进行非图形访问,则上述命令的效果是~/.matlab/R2016a/matlab.prf
添加到~/.matlab/R2016a/matlab.prf
,因此您可以手动执行此操作。
JavaMemHeapMax=I36532
在我使用滑块将首选项设置为36,532 MB并退出Matlab后出现此行。 如果找不到matlab.prf
文件,请点击此处 。