3

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

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

这可能是什么原因造成的?

4

3 回答 3

1

使用提供启动您的应用程序java -Xmx -Xms option -

-Xmx <number> : max memory allocation to app
-Xms <number> : Min memory at startup
于 2013-02-25T12:06:35.043 回答
1

-Xmx在较新版本的 Matlab 中设置参数,请转到Preferences(在工具栏/功能区上),然后

MATLAB > General > Java Heap Memory

那里有一个滑块。必须重新启动 Matlab 才能生效。

但是有一个警告

注意:增加 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文件,请在此处查看

于 2017-02-14T06:13:46.413 回答
0

请参阅此如何在 MATLAB 6.0 (R12) 及更高版本中增加 Java VM 的堆空间? EDIT -Xms设置堆的初始大小。更改它不会对java.lang.OutOfMemory错误产生影响。要使用的选项是-Xmx设置堆的最大大小。有关详细信息,请参见此处。

于 2013-02-25T12:05:05.940 回答