我正在尝试在 matlab_2011a 上运行一个脚本,该脚本计算 50 年的气候学的相同平均值。当我开始对所有年份运行该脚本时,它运行良好,直到第 20 次迭代,然后出现以下消息:
Out of memory. Type HELP MEMORY for your options.
然后我用来clear v1 v2 v3 ...
清除函数内的所有变量,我也用过,clear train
因为我在另一个论坛上看到过它,这些变量无论有没有修改,我再次运行该脚本(从第 21 次迭代开始),结果是相同的消息,但奇怪的是有时它运行一年然后停止。
有什么关于解决这个问题的想法吗?我必须清理什么才能正确运行?(在这个 matlab 版本中没有命令内存也许可以帮助我)。
编辑
解决方案:有一个变量太大,以不同的方式保存结果可以避免内存不足错误。
答案1
我并不是一个狂热的 MATLAB 用户,但我建议您尝试一下:
File > Preferences > General > Java Heap Memory.
然后,您可以将内存量增加到默认值 196 MB 以上。希望这对您有所帮助。
答案2
内存管理是 Matlab 的一个长期问题。最可能的原因out of memory error
是内存泄漏。内存泄漏是可以发现的,但发现它们在技术上具有挑战性且耗时。
要完全释放内存,需要重新启动 Matlab。如果有办法在处理部分数据后保存结果,请保存数据并重新启动 Matlab。重新加载数据并处理另一组数据。重复操作,直到处理完所有数据。要处理的数据量应少于 20 年。
这远不够优雅,而且取决于能否保存和重新加载数据。另外,我认为数据本身的大小不是问题。
答案3
试试这个,对我来说效果很好。
- 转到主页 -> 首选项图标 -> 常规 -> Java 堆内存 -> 分配所需的内存大小
- 在“首选项”窗口中,转到“工作区”(超出 Java 堆内存级别)-> 查看“Matlab 数组大小限制”,确保取消选中“将最大数组大小限制为 RAM 的百分比”。因为您想扩展内存,所以我们不需要此功能。
- 完毕。