起因是这样的,上周四上课的时候要画一个正态分布函数,我想都没想直接去了randn(10000),就是一亿个数据,结果用hist函数画图的时候,半天没有反应,居然溢出了。

mlgb的,我平常处理雷达图像的时候你溢出溢出我也就忍了,毕竟数据量是大,我也知道,windows搞不定,必须要用实验室的linux台式机;可如今弄个正态分布你都给我溢出,这是闹那般啊?!
实在不能忍,想起了matlab可以用那个经典的3G switch,于是google百度matlab 3G switch,按照教程一步一步来,果真设置没问题。之前可读的内存也就大概2G左右,如今virtual memory那一项明显增大到了3G.
这下可以了吧,于是兴冲冲地回到matlab 2011a,重新画我的正态分布函数。
马勒戈壁的,又溢出了!
我想不通啊,怎么搞的!不就算个正态分布么你都给我溢出,pack啊什么的指令统统没用,于是我愤怒了。
就当我不知错所考虑要不要买新电脑的时候,我顺手打开了电脑里的matlab 2009a(因为有一个程序是用2009a编译的,所以我一直留着2009a,只不过不怎么用),鬼使神差地又输入了一次相同的指令。
卧槽,居然出来了!
于是我茫然啊,怎么低版本反而比高版本更牛逼啊,想不通啊!
顺手打开matlab的memory指令和feature memstats,仔细看看,我终于明白了。
如果你输入memory指令,几个参数是这样的:
Maximum possible array:            1208 MB (1.267e+009 bytes) *
Memory available for all arrays:   2381 MB (2.497e+009 bytes) **
Virtual Memory (Address Space):
Total:                              2899 MB (b53e0000)

虽然换成3GB开关后,total virtual memory都是3GB了,但并不是3GB你都能用的,其实最重要的是上面两个参数。第一个,是能储存的最大数组的大小,第二个是能储存的所有数组的大小。也就是说,虽然我这里有2899MB的内存供matlab使用,其实最多能用到2381MB来储存数组,其他的,程序的别的地方也要用啊。而当我打开matlab 2009a和2011a的时候,输入相同的指令,我发现,结果居然是完全不一样的!!
作为一个强烈的偏执症患者,我周末唯一做的一件事情,就是测试了几乎所有主流matlab版本的内存性能。安装matlab是一个漫长的坑爹的过程,我把结果罗列如下。
特此说明:以下结果是在同一操作系统、同一环境下,同时打开所有版本的matlab,输入同样的操作指令memory和feature memstats得出的结果,仅供参考(2011a除外,因为我后来手一抖把2011a删了,实在实在不想再装了……)。
操作系统系能:XP SP3操作系统,32位
CPU Intel Core2 Duo CPU P8600 @2.40GHz
3GB 物理内存,4.5GB虚拟内存

Matlab 7.0

Matlab 7.1 sp3

Matlab 2008a

Matlab 2009a

Matlab 2009b

Matlab 2010a

Matlab 2011a

Maximum possible array(能存放的最大数组)

1170M

1197M

1370M

1208M

1370M

1215M

950M

Memory available for all arrays(能存放数组的最大空间)

2414M

2454M

2470M

2381M

2419M

2353M

 

Memory used by MATLAB(Matlab使用内存)

3066M

3066M

3067M

3067M

3067M

3067M

3067M

Physical Memory (RAM)(物理内存)*

使用

954M

790M

942M

959M

934M

792M

空闲

2112M

2276M

2124M

2107M

2132M

2274M

总共

3066M

3066M

3066M

3066M

3066M

3066M

3066M

Page File (Swap space):(交换页)*

使用

864M

681M

848M

969M

994M

697M

空闲

6674M

6857M

6691M

6569M

6544M

6841M

总共

7539M

7539M

7539M

7538M

7538M

7539M

7539M

Virtual Memory (Address Space)(虚拟内存)*

使用

333M

296M

451M

526M

481M

464M

空闲

2566M

2603M

2447M

2373M

2418M

2435M

总共

2899M

2899M

2899M

2899M

2899M

2899M

2899M

Largest Contiguous Free Blocks:(最大连续存储块)**

第一块

1170M

1197M

1369M

1207M

1369M

1215M

950M

第二块

851M

851M

851M

850M

850M

850M

850M

总共

2414M

2454M

2415M

2288M

2353M

2353M

 

*这三项值即是是同一版本,每次输入也会有变动,但变动总体不大。

**基本为固定值。最大连续存储块的第一块这个值和上面能存放的最大数组的值相对应,总共大小和能存放的数组最大空间相对应。
从这个表格中,我们可以得出以下结论:
一、所有测试结果的物理内存、交换页和虚拟内存的总数是一样的。但是有这么一个趋势,即版本越高,这三项占用的大小会 越大。但总的对我的电脑来说,都是足够了。
二、即是是同一操作系统,不同的版本,最大连续存储块的值也是不一样的。于是这也解释了同一操作,为什么有的版本会溢出,为什么有的版本能算数来了。
总的来说,有这么一个趋势,只看a版本,就是随着版本越高,能存放数组的最大空间大小会越来越小,第一块(能存放的最大数组空间)的数值也在变小。这大概也很好理解,版本高了,加载的东西多了,启动一个matlab可能会多调用很多东西,因此能使用的空间也小了。我那引以为豪的最新2011a本版,居然当初只有可怜的950M,跟别的一比,难怪随便算个东西就溢出了。
7.1实际上是7.0版本的sp3补丁,因此总体性能全部优过7.0,这个不足为怪。即是放到所有版本中,matlab7.1的能存性能也是出众的,因此强烈推荐大家使用这个版本。
除此之外,2008a也是一个不错的版本,本来就是一个经典版本,从性能来看,似乎也很不错,存放的最大数组居然达到了1370M,比7.1版本还好的多,让我很开心。
2009a版本似乎有些bug,总体性能很一般,几乎跟2010a一模一样,却差了2008a挺大一截,而且2009a安装的时候有特别严重的bug,只要我选择自定义安装,每到97%的时候必定会出现模块注册失败报错的现象,完全安装却没有问题,研究两天未果,虽然好像目前看不出报错的后果在那里,但是报错本身,已经足够让我这个偏执症患者火冒三丈了,而我又特别不想装三四个G的无用的模块到我电脑里……可是我一直用的那个图像处理软件却是2009a编译的,所以我还必须用2009a或以后版本,崩溃啊……
2011a就不说了,只能说我电脑挫,等我有了64位操作系统再来装吧……
就在昨天晚上,我突然想到我从来没有装过b版本,那这一次就装b吧,但愿这次装b不会遭雷劈。下了一晚的2009b的种子,自定义安装,memory,哇,性能居然如此优良,整体性能都比2009a好了一截,简直和2008a没有任何区别,真是甚合我意啊。原因?既然matlab自己都说了b主要是对a版本的补丁,那么我猜b是把傻*的a改的更好了?我猜是吧。
通过这一番折腾,我终于把matlab各个版本搞得差不多了,以后再也不想再装matlab了……至于别的版本,什么2008b啊,2007a啊,欢迎大家测试,如果真有蛋疼的测试了所有的,欢迎告诉我结果……
赶紧用matlab继续苦逼地干活去……

Matlab内存问题相关推荐

  1. MATLAB 内存容量修改

    [status,info]=dos('@echo off &for /f "tokens=4,5*" %i in (''tasklist ^|findstr /r /I & ...

  2. matlab内存溢出的解决方案

    (1) 增加虚拟内存:cmd -> taskmgr 打开任务管理器,查看物理内存和虚拟内存,可观察matlab在运行过程中是否超过物理内存和虚拟内存.若超过,增加虚拟内存的方法是不可行的.物理内 ...

  3. Matlab内存不足问题的解决 .

    Matlab内存不足问题的解决 . 参考文章: (1)Matlab内存不足问题的解决 . (2)https://www.cnblogs.com/hualimengyu/p/3593799.html 备 ...

  4. matlab memorySian,matlab内存溢出的解决方案

    matlab内存溢出的解决方案(整理) 1)增加虚拟内存的方法是不可行的 2)使用PACK:PACK可以将matlab中的变量导出到磁盘中,以增加可用内存 3)减少变量的内存开销 4)64位架构:采用 ...

  5. matlab java堆内存溢出,matlab内存溢出的解决方案

    (1) 增加虚拟内存:cmd -> taskmgr 打开任务管理器,查看物理内存和虚拟内存,可观察matlab在运行过程中是否超过物理内存和虚拟内存.若超过,增加虚拟内存的方法是不可行的.物理内 ...

  6. matlab 3gb开关 win7,【转】Windows 32位系统 大内存 3GB开关 Matlab 内存管理

    /3GB 开关默认情况下,Windows 可以对总计 4 千兆字节 (GB) 的虚拟地址空间进行寻址.默认情况下,此地址空间中的 2 GB 为内核(操作系统)保留,另外 2 GB 是为用户模式程序(如 ...

  7. matlab 内存拷贝_Matlab内存不足问题的解决

    最近尝试采用matlab中的神经网络工具包做些试验,但是数据的规模比较大,在模型训练的过程中,总是返回"Out Of Memory"错误,而不能继续训练.尝试了几种可能的解决方案, ...

  8. matlab内存管理(二)

    转自:http://hi.baidu.com/bi%CB%AB%C9%FA%BB%A8/blog/item/5ab86c38ac2f45e715cecbab.html 1,确保内存的连续性 Matla ...

  9. matlab内存管理

    转自:http://my.donews.com/deng/2006/09/24/vijgqxehmkxiruywdauvxyiafogtskeymhyw/ 用 Matlab 进行大规模科学计算或仿真时 ...

  10. matlab内存不足问题

    1.输入memory,查看内存 可能的最大数组: 11127 MB (1.167e+10 bytes) * 可用于所有数组的内存: 11127 MB (1.167e+10 bytes) * MATLA ...

最新文章

  1. 数字图像处理:图像就是函数的解读
  2. 剑指offer:面试题09. 用两个栈实现队列
  3. 将日期yyyy-MM-dd转为数字大写的形式
  4. 用可组合的构建块丰富用户界面?谷歌提出「可解释性」的最新诠释
  5. mysql查看存储过程工作记录20130711
  6. mysql zip 安装 启动_window的zip版mysql安装启动
  7. 程序员面试题精选100题(03)-子数组的最大和[算法]
  8. python的正则表达式 re-------可以在字符串前加上 r 这个前缀来避免部分疑惑,因为 r 开头的python字符串是 raw 字符串,所以里面的所有字符都不会被转义...
  9. 怎么求平均数_EXCEL怎么求企业连续几年业绩的平均增长率
  10. SSM框架整合druid查看监控数据
  11. 模糊搜索神器FZF番外篇
  12. vue中tab选项卡刷新页面后保持选中状态_Altium Designer中的快捷键汇总
  13. 基于代理的数据库分库分表框架 Mycat实践
  14. 快切——响应css框架之布局结构命名
  15. 几个常用的JavaScript字符串处理函数
  16. 输入n个整数,输出其中最小的k个
  17. 【问题解决】sql2012安装时卡在正在启动操作系统功能"NetFx3"上不动的解决办法
  18. 【制作】基于51单片机的蓝牙遥控小车方案
  19. kali安装navicat
  20. 带你区分超键,候选键,主键

热门文章

  1. json获取data对象
  2. 色阶图matlab,什么是色阶图?
  3. 2014台州学院ACM集训队寒假练习赛2
  4. 新手python笔记之安装pip升级问题
  5. 一篇图解Linux内存碎片整理
  6. C语言的格式输出 C语言中字符的作用:
  7. 学习如何将Jenkins与UI测试报告完美整合,事半功倍,轻松获取高薪职位!
  8. 通过Arduino端口扩展Raspberry Pi
  9. byte(128)为什么是-128?
  10. 51nod 1244 莫比乌斯函数之和(积性函数前缀和)