java.lang.OutOfMemoryError:启动时的Java堆空间

几天前,我开始在MATLAB启动时遇到java.lang.OutOfMemoryError: Java heap spaceexception – 在我运行任何代码或向路径添加任何内容之前。 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文件,请点击此处 。