Out of Memory,Matlab

Matlab中“out of memory”的问题总是相当让人头疼,比如大矩阵做运算时,一不小心就出现了。

出现该问题的原因在于:内存在使用过程中,经过不断的分配和释放过程,导致被分割成许多不连续的区域(即内部或外部碎片)。而Matlab中的矩阵是以块(block)的形式存储的,也就是说当Matlab在为即将存储的矩阵划分block时,如果没有相应大小的连续内存可供分配,就会报告“out of memory”的错误。

这也解释了,为什么Matlab刚启动的时候,要比反复运行程序一段时间,出现out-of-Memory错误的可能性要低。


memory查看内存使用情况
(Memory函数当前仅可用于PCWIN和PCWIN64,即32位和64位Windows操作系统。)

memory指令用于展示Matlab当前正在使用和可用内存的大小(memory displays information showing how much memory is available and how much the MATLAB® software is currently using.):

>> memory
  1. Maximum Possible Array // 连续空闲内存块的大小,MATLAB当前能够创建的单个数组的上界【the size of the largest contiguous free memory block.As such, it is an upper bound on the largest single array MATLAB can create at this time】.
    该值的计算:取MATLAB虚拟地址空间的最大连续内存块和全部可用系统内存中的较小值。
  2. Memory Available for All Arrays //可用于存储变量的最大内存大小【Memory Available for All Arrays is the total amount of memory available to hold data. The amount of memory available is guaranteed to be at least as large as this field】
    该值的计算:MATLAB总共可用的虚拟地址空间和总共可用的系统内存中取较小。
  3. Memory Used by MATLAB //MATLAB已经占用的内存大小
  4. Total Physical Memory(RAM) //总共的物理内存大小

例如:

>> memory
Maximum possible array:     85 MB (8.915e+07 bytes) *  //当前系统数组所能占用的最大内存
Memory available for all arrays:    848 MB (8.892e+08 bytes) ** //当前系统变量可被分配的内存空间
Memory used by MATLAB:    866 MB (9.076e+08 bytes) //Matlab已经占用的内存大小
Physical Memory (RAM):   3509 MB (3.679e+09 bytes) //系统物理内存大小

*  Limited by contiguous virtual address space available. //*表示受限于连续可用的虚拟地址空间
** Limited by virtual address space available. //**表示受限于可用的虚拟地址空间大小
>> userview = memory

userview结构包含以下内容:
1. Maximum Possible Array
2. Memory Available for All Arrays
3. Memory Used By MATALB

>> [userview systemview] = memory

systemview结构包含如下内容:
1. Virtual Address Space
2. System Memory
3. Physical Memory

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

>> feature('memstats')
    Physical Memory (RAM):
        In Use:                             2914 MB (b6298000)
        Free:                                594 MB (
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值