是否存在“Out of Memory”错误的阈值?

时间:2014-11-01 18:17:47

标签: matlab memory memory-management out-of-memory

当我使用某些代码时,

 x = randi(100,[1000 1000000]);

我收到Out of Memory错误。

然而,当我有,

x = randi(100,[1000 500000]);

我没有收到任何错误,但我的笔记本电脑几乎停止工作了!

有时我会花费force shutdown

我真的更喜欢Out of Memory错误!

Q1 + Q2:该错误是否存在 阈值 ,我可以调整

问题3:或者其他任何建议(可能会限制MATLAB可以访问的内存)?

谢谢,

1 个答案:

答案 0 :(得分:1)

A1:是的,内存是阈值

虽然内存是限制,但您对 "的观察几乎停止工作" 与与任务关联的CPU绑定处理相关计算所有500,000,000个元素的值并存储起来。正如您在 A3 中看到的那样,此尝试需要4GB RAM存储空间才能处理 x

A2:是的。添加更多内存到调整阈值

如果您的问题需要更大的对象,请获取更多空间来存储它,如果您的CPU绑定观察很重要,请从分布式处理(无论是云还是网格)获取计算以卸载本地主机。

A3:是的。使用whos

检查消耗的MATLAB内存
mCloud:1> x = randi( 100, [1000 500000] );
mCloud:2> whos
Variables in the current scope:

   Attr Name        Size                     Bytes  Class
   ==== ====        ====                     =====  =====
        ans         1x70                       757  cell
        x        1000x500000            4000000000  double

Total is 500000070 elements using 4000000757 bytes

mCloud:3>