java.lang.OutOfMemoryError:启动时的java堆空间
几天前,我开始在启动MATLAB时遇到一个java.lang.OutOfMemoryError:启动时的java堆空间,java,matlab,out-of-memory,Java,Matlab,Out Of Memory,几天前,我开始在启动MATLAB时遇到一个java.lang.OutOfMemoryError:java heap space异常-在我运行任何代码或向路径添加任何内容之前。MATLAB加载的默认目录上也没有文件 我在Windows7 64位上运行MatlabR2012A 什么原因可能导致这种情况?请参阅此 编辑 -Xms设置堆的初始大小。更改此选项不会对java.lang.OutOfMemory错误产生任何影响。要使用的选项是-Xmx,它设置堆的最大大小 使用java-Xmx-Xms选项启动应
java.lang.OutOfMemoryError:java heap space
异常-在我运行任何代码或向路径添加任何内容之前。MATLAB加载的默认目录上也没有文件
我在Windows7 64位上运行MatlabR2012A
什么原因可能导致这种情况?请参阅此
编辑
-Xms
设置堆的初始大小。更改此选项不会对java.lang.OutOfMemory
错误产生任何影响。要使用的选项是-Xmx
,它设置堆的最大大小 使用java-Xmx-Xms选项启动应用程序
供给-
-Xmx <number> : max memory allocation to app
-Xms <number> : Min memory at startup
-Xmx:应用程序的最大内存分配
-Xms:启动时的最小内存
要在较新版本的Matlab中设置-Xmx
参数,请转到首选项(在工具栏/功能区上),然后
那里有一个滑块。Matlab必须重新启动才能生效
然而,有一个问题:
注意:增加Java堆大小会减少内存量
可用于在阵列中存储数据
我猜这意味着Matlab不在其Java堆空间中存储数组。但如果我们只是设定上限,这有关系吗?我不这么认为。更具体地说,看看当我将上面的滑块设置为36 GB时会发生什么,Matlab启动,它的虚拟内存(如top
所示)立即变为39.9 GB。但物理内存的使用量只有300 MB左右。因此,除非它真的在堆空间中放置了一些东西,否则可用于阵列的物理内存不会减少。所以看起来这个警告可以忽略
如果您只能通过终端以非图形方式访问Matlab,上述命令的作用是将以下行添加到~/.Matlab/r2016 a/Matlab.prf
,因此您可以手动执行此操作
JavaMemHeapMax=I36532
这一行出现在我使用滑块将首选项设置为36532MB并退出Matlab之后。如果您找不到matlab.prf
文件,请检查。您在什么平台上?@L0j1k-我在Windows 7上。我真傻,忘记了,我会把它添加到问题中。它是在启动时,即在我做任何事情来使用堆空间之前。。。而且我使用的是64位,所以我怀疑这是正确的problem@noam-Xms专门设置heapMore的初始大小:java-Xmx1800m
将以1.8GB的最大内存分配启动JVM。实际上,JVM以-Xmx256m开头。
JavaMemHeapMax=I36532