Memory matlab中没有释放内存?
我正在运行一个脚本来设置一个情节的动画(模拟水流)。过了一会儿,我通过执行ctrl-c来终止循环。 这样做了几次后,我得到了错误:Memory matlab中没有释放内存?,memory,matlab,Memory,Matlab,我正在运行一个脚本来设置一个情节的动画(模拟水流)。过了一会儿,我通过执行ctrl-c来终止循环。 这样做了几次后,我得到了错误: ??? Error: Out of memory. 在我开始接收到该错误后,对脚本的每次调用都会生成该错误。 现在,它发生在我调用的函数内部的任何东西被执行之前,也就是说,即使我将行a=1添加为我调用的函数的第一行,我仍然会得到错误并且没有打印输出,因此函数内部的代码甚至不会被执行。 这可能是什么原因造成的 听起来您没有清除任何变量。您应该提供一种在不点击ctrl
??? Error: Out of memory.
在我开始接收到该错误后,对脚本的每次调用都会生成该错误。现在,它发生在我调用的函数内部的任何东西被执行之前,也就是说,即使我将行
a=1
添加为我调用的函数的第一行,我仍然会得到错误并且没有打印输出,因此函数内部的代码甚至不会被执行。
这可能是什么原因造成的 听起来您没有清除任何变量。您应该提供一种在不点击ctrl-c的情况下停止循环的方法(编写一个带有“停止”按钮和显示器的简单GUI),然后在脚本中清理工作区,或者在脚本开始时清除变量
您是否有意在循环的每次迭代中存储所有数据(或某些大型组件)?可能有几个原因
clear all
在重新启动脚本之前,清除所有变量,或者将脚本更改为函数(函数返回后将自动删除所有临时变量)。请注意,这也会清除所有已加载的函数,因此您的下一次脚本执行必须再次加载它们,这将使下一次执行的速度降低一点(通常很小)。仅调用clear
即可close all
您还可以增加Matlab在您的系统上使用的Java内存量()——请注意,该限制通常相当低,如果您想查看大量的数字,这会让人恼火memory
并查看最大可能变量大小的数字。如果这远小于所有阵列的可用大小,那么是时候重新启动Matlab了(我想如果您使用的是需要重新启动才能解决问题的Windows版本,您可能需要考虑使用Win7安装一台新计算机)您也可以尝试使用
pack
命令,例如:
close all;
clear all;
pack;
清除记忆。虽然在最近的一次mathworks研讨会之后,我问了一位mathworks大师,他也同意了@Andrew Janke关于内存碎片的评论。通常退出并重新启动matlab会帮我解决这个问题(在XP上)。
全部清除
全部关闭
是释放内存的直接方法,这是所有非初学者都知道的
主要问题是,当您完成了一些大数据处理,并清除/关闭了所有内容时,matlab仍然使用大量内存
这是matlab当前的一个主要问题,据我所知,除了重新启动matlab之外,没有解决方案,这很遗憾。请提供一些代码,并告诉我们您使用的是什么matlab解释器(包括版本)。+1。对于案例3,您不需要重新启动。碎片发生在分配给Matlab进程的虚拟内存空间中;重新启动Matlab就足够了,谢谢你的澄清。如果我没记错的话,在WindowsNT(或者是Win95?)上,我们必须完全重新启动。我很高兴这个世界有进步!从文档中可以看出:“
全部清除
会降低代码性能,通常是不必要的”<代码>清除本身会从工作区中删除所有变量<代码>清除所有也会清除已加载的函数,然后需要再次加载这些函数。不要使用全部清除@CrisLuengo:我只在clear
中添加了建议。在大多数实际应用中,性能的影响很小。pack
相当于save;清楚的加载
。因此,在清除所有
后,它是无用的。