内存占用非常高

384次浏览(最近30天)
茱莉亚Rhyins
茱莉亚Rhyins 2019年11月22日
我总是有问题与matlab (R2019b)使用太多的内存(比我保存的变量多)。目前,我正在运行一个函数,从一些结构中提取数据。我暂停了这个函数,因为所使用的内存级别没有任何意义。任务管理器说Matlab正在使用4.7gb的内存,即使我现在没有运行任何东西。我工作空间中所有变量的总大小是~0.055gb,我没有打开图形窗口。在我的电脑上运行的只有两个程序是Matlab和任务管理器。有什么原因,Matlab会使用这么多的内存,我有办法减少它吗?

答案(3)

1月
1月 2019年11月22日
您如何观察内存消耗?Taskmanager会显示内存 含蓄的 Matlab。如果Matlab分配内存并在之后释放它,这并不一定是直接释放的。只要没有其他应用程序请求内存,保持它的状态是有效的。
操作系统为Matlab保留了4.7GB的RAM,这是否会造成任何问题?你为什么说,这是“太多”的记忆?
虽然 现在的 内存消耗很小,不断增长的阵列可能需要更多内存。例子:
x = [];
k=1:1e6
x[k]=k;
结束
虽然最后的数组 x 只占用8MB的RAM(加上头部约100字节),对RAM的中间需求要高得多: 总和(1:1e6)*8字节=4字节 .说明:如果x=[1],下一步x(2)=2复制前一个数组并添加一个新元素。虽然中间使用的内存被释放,但是释放没有保证的时间限制。
你能发布一些代码,重现这个问题吗。
7评论
tom3w
tom3w 2020年6月24日
你好,
Jan提到任务管理器报告为Matlab保留的内存。
考虑到任务管理器或资源监视器,有没有一种方法可以知道Matlab使用的有效内存量,或者其他任何方法(最好不要在Matlab中)?
目前,我找不到任何其他内存指标提到有效内存使用远低于3.7Gb(空的Matlab会话)……
谢谢

登录评论。


何塞-桑切斯
何塞-桑切斯 2020年1月28日
我在HPC集群上运行时遇到了类似的问题。
我的大学集群允许我使用多达520个worker,其中每个HPC节点(4个worker)有8GB RAM。我控制我的parfor循环中消耗的RAM不超过500 MB。但是,当我使用100个并行进程在集群中运行时,集群崩溃并出现“内存不足”错误。
然后,我在本地PC (32 GB RAM)上运行了一个测试,我可以清楚地看到每个worker消耗了超过2gb的RAM,这是每个PARFOR中消耗的RAM数量的5倍多。
在我看来,很明显,MATLAB正在做一些没有按照预期工作的事情!尽管我经常使用我们的集群,但在HPC MATLAB版本2017a中我没有注意到这个问题。
4评论
天元王
天元王 2020年7月30日
我也有同样的问题。如果在HPC的控制节点(1个控制节点,17个计算节点,分布式内存)上调用MATLAB来处理超大矩阵,新版MATLAB能否解决单节点内存不足的问题?

登录评论。


基督教Schwermer
基督教Schwermer 8月16日
你好,
如果没有将变量声明为函数的输出,MATLAB不会释放内存。
致以最亲切的问候
4评论
沃尔特·罗伯森
沃尔特·罗伯森 2020年8月19日
或者如果有泄漏那就是在图像采集软件中。

登录评论。

社区寻宝

在MATLAB中心找到宝藏,并发现社区如何可以帮助你!

开始狩猎!