我正在运行一个脚本来动画一个情节(模拟水流).过了一会儿,我通过ctrl-c来杀死循环.多次这样做后,我得到错误:
??? Error: Out of memory.
Run Code Online (Sandbox Code Playgroud)
在我开始收到该错误后,每次调用我的脚本都会生成它.
现在,它发生在我调用的函数内部的任何内容之前执行,即使我将该行添加a=1为我调用的函数的第一行,我仍然得到错误并且没有打印输出,所以函数内部的代码没有甚至没有被执行.可能是什么导致了这个?
有几个可能的原因.
很可能你的脚本会创建一些填满内存的变量.跑
clear all
Run Code Online (Sandbox Code Playgroud)
在重新启动脚本之前,清除所有变量,或将脚本更改为函数(在函数返回后将自动擦除所有临时变量).请注意,这也会清除所有已加载的函数,因此您下次执行脚本时必须再次加载它们,这会减慢下一次执行的速度(通常很小).clear仅拨打电话可能就足够了.
也许你通过绘制几个图表来制作动画(不先清除轴).因此,您可能会耗尽Java堆空间.您可以单独关闭打开的数字,也可以运行
close all
Run Code Online (Sandbox Code Playgroud)
您还可以增加系统上使用的Java Memory Matlab的数量(请参阅此处的说明) - 请注意,限制通常相当低,如果您想要大量的数字,那就很烦人.
特别是如果您运行的是旧版Windows,则可能会导致内存碎片化.Matlab需要连续的可用空间块来分配变量.要检查内存碎片,请运行
memory
Run Code Online (Sandbox Code Playgroud)
并查看最大可能变量大小的数字.如果这比所有阵列的可用尺寸小得多,那么是时候重新启动Matlab了(我想如果你使用需要重新启动来修复问题的Windows版本,你可能想要研究一下使用Win7的新计算机) .