我在使用MatLab时遇到了几个“内存不足”的问题。我不知道MatLab是否可以使用(或不使用)我计算机的所有内存。这就是问题所在:我的电脑有4 GB的内存和2 GB的交换内存(我的操作系统是Linux/Ubuntu 12.10),但MatLab只使用了2.6 GB,然后显示警告:“内存不足”。有没有可能修复这个问题并允许MatLab使用所有的“可用”内存?谢谢。
2j4z5cfb1#
听起来你在运行32位的Linux和/或32位的MatLab。如果允许足够的交换,一个进程可以占用相当于其虚拟内存地址空间的内存。通常,对于32位Linux,任何进程的地址空间都被限制为3 GB(最后一GB是内核内存空间)。根据使用模式的不同,完全有可能在2.6 GB时无法完成下一个内存请求,因为没有足够的/连续/内存来满足它。这在增长大型阵列时尤其常见。升级到64位版本的Linux/Windows/MacOS和64位的matlab应该可以解决这个问题,但即便如此,在一个有4 GB内存的系统上使用3 GB以上的虚拟地址空间可能会让事情变得非常慢。
h43kikqp2#
一些谷歌搜索显示了this:您的操作系统允许使用多少内存,MatLab就会使用多少内存;增加MatLab可以使用的内存量的唯一方法是减少其他应用程序占用的内存量,或者为操作系统分配更多内存以分配给应用程序。因此,没有简单的方法来告诉matlab使用更多的内存。您要么必须购买更多的内存,优化您的代码,运行输出较少的脚本/函数以一次性存储,要么需要减少正在运行的其他程序的内存使用量。不过,以下是一些有用的链接:memory management functionsmemory allocationrelated discussion on the mathworks forum
2条答案
按热度按时间2j4z5cfb1#
听起来你在运行32位的Linux和/或32位的MatLab。
如果允许足够的交换,一个进程可以占用相当于其虚拟内存地址空间的内存。
通常,对于32位Linux,任何进程的地址空间都被限制为3 GB(最后一GB是内核内存空间)。根据使用模式的不同,完全有可能在2.6 GB时无法完成下一个内存请求,因为没有足够的/连续/内存来满足它。这在增长大型阵列时尤其常见。
升级到64位版本的Linux/Windows/MacOS和64位的matlab应该可以解决这个问题,但即便如此,在一个有4 GB内存的系统上使用3 GB以上的虚拟地址空间可能会让事情变得非常慢。
h43kikqp2#
一些谷歌搜索显示了this:
您的操作系统允许使用多少内存,MatLab就会使用多少内存;增加MatLab可以使用的内存量的唯一方法是减少其他应用程序占用的内存量,或者为操作系统分配更多内存以分配给应用程序。
因此,没有简单的方法来告诉matlab使用更多的内存。您要么必须购买更多的内存,优化您的代码,运行输出较少的脚本/函数以一次性存储,要么需要减少正在运行的其他程序的内存使用量。不过,以下是一些有用的链接:
memory management functions
memory allocation
related discussion on the mathworks forum