Matlab中“Out of memory”问题总结(超全版)

本文详细总结了在Matlab中遇到'Out of memory'错误的原因及解决方法,包括系统操作类如增加虚拟内存、开启3GB开关,Matlab环境操作类如使用pack命令、关闭Java虚拟机,以及代码操作类如优化程序、使用稀疏矩阵等策略。
摘要由CSDN通过智能技术生成

      Matlab中“Out of memory”问题总是相当令人头疼,比如大矩阵做运算时一不小心就会出现。其原因在于:内存在使用的过程中会不断的分配和释放,导致被分割成很多不连续的区域(操作系统知识)。而Matlab中矩阵的存储是以块(block)的形式存储的,也就是说当Matlab在为即将存储的矩阵划分block时,如果没有相应大小的连续内存用于分配,就会报告“Out of Memory”----即便实际内存没有被完全使用。

============================================================================

      遇到这个问题时,首先要学会使用help命令查看内存相关的命令及其用法(matlab最最最权威的指导材料,你值得拥有)。例如使用”memory“命令查看内存使用情况,举个例子:

>>memory
Maximum possible array:            1102 MB (1.155e+009 bytes) *    #当前系统数组能占的最大内存
Memory available for all arrays:   1427 MB (1.496e+009 bytes) **    #当前系统变量可被分配的空间
Memory used by MATLAB:              363 MB (3.811e+008 bytes)    #matlab已经使用的内存数量
Physical Memory (RAM):             3063 MB (3.212e+009 bytes)    #系统物理内存数量
*  Limited by contiguous virtual address space available.    #打星号表示受限于连续可用的虚拟地址空间(内存空间)
** Limited by virtual address space available.    #打双星号表示受限于可用的虚拟地址空间(内存空间)

(以上是以32位windows系统为例)

      此外,由于反复分配和释放内存会使可用的连续内存段减少,因此当 Matlab 刚刚启动时连续内存最多,此时往往可以新建非常大的数组,这一点可以用命令“feature('memstats')”(matlab version >= 7.0)看出。如果显示的最大连续内存段很小,但实际可用内存(非连续的)仍旧很多,则表明内存中碎片太多了。再举个例子:

>> feature('memstats')
    Physical Memory (RAM):
        In Use:                             2189 MB (88db8000)
        Free:                                873 MB (36924000)
        Total:                              3062 MB (bf6dc000)
    Page File (Swap space):
        In Use:                             3239 MB (ca7be000)
        Free:                               2884 MB (b4444000)
        Total:                              6124 MB (17ec02000)
    Virtual Memory (Address Space):
        In Use:                              612 MB (264d2000)
   
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值