几天前,我开始java.lang.OutOfMemoryError: Java heap space
在启动 MATLAB 时遇到异常 - 在我运行任何代码或向路径添加任何内容之前。MATLAB 加载的默认目录也没有文件。
我在 Windows 7 64 位上运行 MATLAB R2012a。
这可能是什么原因造成的?
几天前,我开始java.lang.OutOfMemoryError: Java heap space
在启动 MATLAB 时遇到异常 - 在我运行任何代码或向路径添加任何内容之前。MATLAB 加载的默认目录也没有文件。
我在 Windows 7 64 位上运行 MATLAB R2012a。
这可能是什么原因造成的?
使用提供启动您的应用程序java -Xmx -Xms option
-
-Xmx <number> : max memory allocation to app
-Xms <number> : Min memory at startup
要-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
文件,请在此处查看。
请参阅此如何在 MATLAB 6.0 (R12) 及更高版本中增加 Java VM 的堆空间?
EDIT
-Xms
设置堆的初始大小。更改它不会对java.lang.OutOfMemory
错误产生影响。要使用的选项是-Xmx
设置堆的最大大小。有关详细信息,请参见此处。