【发布时间】:2014-09-05 09:03:01
【问题描述】:
我使用 MATLAB 来编写一些元启发式算法。最近,我一直在研究解决工业工程问题的算法。我对 MATLAB 的问题是出现“内存不足”错误。现在我正在尝试来自 Mathworks 和 Stackoverflow 的一些建议(希望它们会起作用)。然而,有一件事我不明白。
在 MATLAB 中运行算法期间(中等规模的问题需要 4000-5000 cpu sec),即使我预先分配变量,代码也不需要动态数组调整大小并且不添加新变量,我观察到算法的内存使用量不断增长。主函数调用了我写的其他一些函数。内存使用量增加的原因可能是什么?
我用来运行算法的电脑有8GB内存,安装了win8 64bit。
【问题讨论】:
-
算法的空间复杂度是多少?
-
如果所有其他方法都失败,请考虑(以编程方式)在固定数量的循环后重新启动 matlab。每次需要几秒钟,但这是清除内存的最有效方法。 (你可能需要在某个地方保存一个变量来记住你走了多远。)
-
你在调用任何 mex 文件吗?我之前通过 mex 遇到过内存泄漏问题。