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

时间:2013-02-25 12:01:24

标签: java matlab out-of-memory

几天前,我开始在MATLAB启动时遇到java.lang.OutOfMemoryError: Java heap space异常 - 在我运行任何代码或向路径添加任何内容之前。 MATLAB加载的默认目录也没有文件。

我在Windows 7 64位上运行MATLAB R2012a。

导致这种情况的原因是什么?

3 个答案:

答案 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