【问题标题】:Matlab: use of memoryMatlab:使用内存
【发布时间】:2014-05-30 23:42:29
【问题描述】:

我在使用 MATLAB 时遇到了几个“内存不足”问题。我不完全了解 Matlab 是否可以使用(或不使用)我计算机的所有 ram 内存。这就是问题所在:我的计算机有 4gb 的 ram 内存和 2gb 的交换内存(我的操作系统是 Linux/Ubuntu 12.10),但 Matlab 最多只使用 2.6gb,然后显示警告:“内存不足”。

是否可以解决此问题并允许 Matlab 使用所有“可用”内存?

谢谢。

【问题讨论】:

  • 您的操作系统和其他应用程序使用了一些内存。你怎么知道可用内存超过 2.6 GB?无论如何,在 Matlab commnand 窗口中输入memory 可能会为您提供更多信息
  • 使用系统监视器(在 ubuntu 中)我获得了我想要的所有信息。系统的可用内存是 3.9gb,而且当我使用 Matlab 时,我可以检查其他程序的内存使用情况,这不是问题,我的意思是 Matlab 最多只使用 2.6gb,它有更多的内存可用的。命令“memory”仅适用于 Windows matlab 版本,在 ubuntu 中我尝试使用 [stackoverflow.com/questions/12350598/…

标签: matlab unix memory memory-management


【解决方案1】:

听起来您正在运行 32 位 linux 和/或 32 位 MATLAB。

如果您允许足够的交换,一个进程可以占用其虚拟内存地址空间的内存。

通常对于 32 位 linux,任何进程的地址空间都被限制为 3gb(最后一个 gb 是内核内存空间)。根据使用模式,完全有可能在 2.6gb 时下一个内存请求无法完成,因为没有足够的 /contiguous/ 内存来满足它。这在增长大型数组时尤其常见。

使用 64 位 MATLAB 升级到 64 位版本的 linux/windows/macOS 应该可以解决这个问题,但即便如此,在具有 4gb 内存的系统上使用 3gb+ 的虚拟地址空间可能会开始让事情变得非常缓慢。

【讨论】:

  • 是的,就像你说的:我在某种意义上解决了这个问题,在这个链接 [mathworks.com/help/matlab/matlab_prog/…,有一个 matlab 内存限制的解释,它显示了一个 MATLAB 支持的操作系统列表和他们的过程限制。总之,matlab的可用内存确实存在限制,这取决于操作系统的位数和matlab版本的相应数量。显然,该限制将小于计算机的总可用内存。感谢您的回答!
【解决方案2】:

一些谷歌搜索提出了this

MATLAB 将使用您的操作系统允许使用的内存; 增加 MATLAB 可以使用的内存量的唯一方法是减少 其他应用程序占用的内存量或给操作系统更多 分配给应用程序的内存。

所以不,没有简单的方法告诉 matlab 使用更多内存。 您要么必须购买更多内存、优化代码、运行具有较少输出的脚本/函数来一次存储,要么减少正在运行的其他程序的内存使用量。 不过,这里有一些有用的链接:

memory management functions

memory allocation

related discussion on the mathworks forum

【讨论】:

  • 我认为 Matlab 的可用内存存在某种限制,Matlab 可以使用我的系统允许的尽可能多的内存似乎不是真的。只使用了 500mb 的内存,我用 c++ 编写了一个小程序来“饱和”内存并且它起作用了,我可以看到它是如何“捕获”整个内存(4gb)的。之后,我尝试仅使用 matlab 来“饱和”内存,但又一次,我做不到(它只使用了 2.6 gb ....)
  • @Javier Gargiulo 然而,没有任何功能可以告诉 matlab 在 matlab 中使用更多内存。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-06-05
  • 1970-01-01
  • 2013-04-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-23
相关资源
最近更新 更多