2013-02-25 42 views
3

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

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

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

+2

你在哪个平台上? – L0j1k 2013-02-25 12:02:11

+2

@ L0j1k - 我在Windows 7上。我很难忘,我会将它添加到问题中。 – olamundo 2013-02-25 12:05:01

回答

1

转寄此How do I increase the heap space for the Java VM in MATLAB 6.0 (R12) and later versions? EDIT -Xms设置初始大小堆。改变这个将不会对java.lang.OutOfMemory错误产生影响。使用的选项是-Xmx,其中设置了堆的最大大小See here for details.

+0

它在*启动*即我做任何事情之前用尽堆空间... moreso我在64位,所以我怀疑这是问题 – olamundo 2013-02-25 12:06:42

+0

@noam -Xms设置堆的初始大小 – Sathish 2013-02-25 12:09:20

1

开始使用java -Xmx -Xms option 提供您的应用程序 -

-Xmx <number> : max memory allocation to app 
-Xms <number> : Min memory at startup 
+0

更具体地说:'java -Xmx1800m'将启动JVM,最大内存分配为1.8GB。如果不成立,JVM将以-Xmx256m开头。 – vallismortis 2015-06-17 04:01:30

1

设置在较新版本的Matlab的的-Xmx参数,去(工具栏/色带)

MATLAB > General > Java Heap Memory 
,然后

那里有一个滑块。 Matlab将不得不重新启动才能生效。

有一个warning,但是:

Note: Increasing the Java heap size decreases the amount of memory available for storing data in arrays.

我想这意味着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

相关问题