我希望这里的某个人能够解释或指向一个我可以了解更多Matlab内存管理的网页。我知道Matlab是一种更高级的语言,所以它负责内存管理,这是好的和坏的。好的原因我不需要担心它和坏因为我不知道它在幕后做了什么。 我问的原因是我最近收到了这个错误信息。
Insufficient Java heap memory to continue operation
当然,我正在使用2010年中期的15“Macbook pro,只有4 GB的RAM,并不是真正执行所有图像操作的最佳计算机。我知道Matlab有删除功能,我没有我不知道何时/是否有助于使用这个函数来节省内存?我只在硬件相关的任务中使用了删除功能,当我通过串行发送数据时我删除了我的串行对象。但除此之外我应该使用删除我自己的内存管理?
答案 0 :(得分:2)
见this question。要防止Java堆错误,您需要更改JVM选项。更改Matlab首选项中的默认值,或使用-Xmx
(以及可选的-Xms
)选项创建新的java.opts
文件,例如,
-Xmx1g
答案 1 :(得分:0)
要在更新版本的Matlab中设置-Xmx
参数的等效值,请转到偏好设置(在工具栏/功能区上),然后
MATLAB > General > Java Heap Memory
那里有一个滑块。必须重新启动Matlab才能生效。
关于这样做有warning,但正如我wrote elsewhere,我认为可以忽略它。
如果您只通过终端对Matlab进行非图形访问,则上述命令的效果是将以下行添加到~/.matlab/R2016a/matlab.prf
,因此您可以手动执行此操作。
JavaMemHeapMax=I36532
在我使用滑块将首选项设置为36,532 MB并退出Matlab后出现此行。如果您找不到matlab.prf
文件,请检查here。