转载自:http://blog.csdn.net/xiaojidan2011/article/details/8089532

20170306修改:

因为重装系统,装了R2016a版本,增加了一个4G的金士顿内存条(总内存8G),使用了一个多月了,没有发现内存不足的问题。

警告并不是说真的物理内存用完了,一般out of memenry存在以下几种情况:
1、 变量需要的存储空间超过了可用的内存空间
2、 数据需要的存储空间,超过内存中最大的可用连续存储空间
3 、程序和问题求解方法的设计不周,导致内存溢出

个人认为,第一种出现情况最少,第二种出现情况应该是大众情况,第三种那我只能说你是个不太地道、不够细心的程序员,至少分配大点的地方给变量么!!下面就简单说下处理和应对方法:

由于在使用的过程中,由于存储单元的不断的被分配和清除,内存会被分割成不连续的区域,这是很容易造成“Out of Memory”。

1、为矩阵变量预制内存而不是动态分配
       在动态分配的过程中,由于开始Matlab所用的Block随着矩阵的增大而连续的为此矩阵分配内存,但是由于Block的不连续性,很有可能最开始分配的Block不能满足存储的需要,Matlab只好移动此Block以找到更大的Block来存储,这样在移动的过程中不但占用了大量的时间,而且很有可能它找不到更大的块,导致Out of Memory。而当你为矩阵变量预制内存时,Matlab会在计算开始前一次性找到最合适的Block,此时就不用为变量连续的分配内存。
比较下面两个程序:
       (1)for k = 2:1000
                      x(k) = x(k-1) + 5;
                end
      (2)x = zeros(1, 1000);
                for k = 2:1000
                      x(k) = x(k-1) + 5;
                end
     显然,第二个更好!!!最好的方法是,在程序一开始就位所有大的矩阵变量预制存存储单元!!!

2、尽量早的分配大的矩阵变量
        Matlab使用heap method管理内存。当在Matlab heap中没有足够的内存使用时,它会向系统请求内存。但是只要内存碎片可以存下当前的变量,Matlab会重新使用内存。所在在大内存变量clear以后,新建的小内存变量仍可以使用那部分内存空间,但相反就不行了。比如说a变量4M,b、c、d、e分别为1M,如果a被clear以后定义bcde,则可以使用a的空间,如果clear b,c,d,e以后,假如这四个变量不是连续的,那么a就不能使用它们释放的内存。
3、尽量避免产生大的瞬时变量,当它们不用的时候应该及时clear

4、将矩阵转化成稀疏形式
    如果矩阵中有大量的0,最好存储成稀疏形式。稀疏形式的矩阵使用内存更少,执行时间更短。

5、使用pack命令
      当内存被分为很多碎片以后,其实本身可能有很大的空间,只是没有作构的连续空间即大的Block而已。如果此时Out of Memory,此时使用pack命令可以很好的解决此问题。

6、如果可行的话,将一个大的矩阵划分为几个小的矩阵,这样每一次使用的内存减少。

7、增大虚拟内存
     Windows XP,右键“我的电脑”->属性->高级->性能->设置,从而改变其虚拟内存。
      Windows 7,右键“计算机”->属性->(左边栏)高级系统设置->高级->(性能)设置->高级->(虚拟内存)更改,建议物理内存的两倍左右,如果物理内存已经3G+,那就不用调整了。

8、尽量少使用系统资源(对于Windows)
     Windows中字体、窗口等都是要占用系统资源的,所以在Matlab运行时尽量不要打开不用的窗口。

9、如果没有必要,不要启动Java虚拟机,采用matlab -nojvm启动 (在快捷方式属性里面的 "..../matlab.exe") 改为("...../matlab.exe" - nojvm)

10、关闭Matlab Server

Matlab使用过程中内存不足问题的总结(修改)相关推荐

  1. matlab运行过程中出现找不到指定模块问题解决

    matlab运行过程中出现找不到指定模块问题解决 参考文章: (1)matlab运行过程中出现找不到指定模块问题解决 (2)https://www.cnblogs.com/dyllove98/p/32 ...

  2. MSComm控件过程中内存溢出和GetOneDimSize出错的问题

    MSComm控件过程中内存溢出和GetOneDimSize出错的问题 现在做的一个项目需要实现上位机和单片机的串口通信,为了方便,使用了MSComm控 件,但写程序时在处理接收数据遇到了问题,程序可以 ...

  3. matlab换挡程序,一种基于MATLAB换挡过程中快速锁定分析数据的方法与流程

    本发明涉及汽车变速器数据分析,特别的,涉及一种基于matlab换挡过程中快速锁定分析数据的方法. 背景技术: 自动变速器的核心功能是能根据驾驶员意图进行自动换挡,解放驾驶员的左脚:在自动变速器的使用过 ...

  4. mysql内存淘汰_从创建索引过程中内存变化来看SQL Server与MySQL的内存淘汰算法

    在sqlserver中,几年之前就注意到一个现象:sqlserver中对一个大表创建索引或者rebuild索引的过程中,会引起内存剧烈的动荡,究其原因为何,这种现象到底正不正常,是不是sqlserve ...

  5. 解决使用MSComm控件过程中内存溢出的问题

    现在做的一个项目需要实现上位机和单片机的串口通信,为了方便,使用了MSComm控件,但写程序时在处理接收数据遇到了问题,程序可以编译通过,但运行的过程中,程序只要接收到串口发来的数据,就会弹出内存溢出 ...

  6. 在计算机使用过程中内存出现,电脑在使用过程中提示电脑内存不足怎么办?

    在使用电脑的过程中可能会出现系统死机或蓝屏现象.导致电脑系统死机的因素有很多,其中电脑内存问题导致系统死机就是比较常见的.如果在使用过程中发现电脑提示内存不足怎么办?小编给大家分享一篇电脑内存不足的解 ...

  7. 内存管理——程序运行过程中内存的作用以及如何与cpu、os交互

    今年以来,内存条价格暴涨,已经跃升为新的新一代理财产品,所以今天就和大家讨论一下内存条的话题,主要内容就是在程序运行过程中,内存的作用以及如何与CPU,OS交互. 我们先来讨论:计算机的运行究竟是在做 ...

  8. Microsoft Visio Premium 2010安装过程中遇到错误1402所需修改的注册表项

    2019独角兽企业重金招聘Python工程师标准>>> 昨天为了画一个数据库的模型图,装了下Visio,结果安装的时候一直报1402的错误,而且每次安装时候遇到这个错误,都需要回滚重 ...

  9. jmeter压测过程中内存溢出

    转载自:https://www.cnblogs.com/imyalost/p/7901064.html  老_张 jmeter是一个java开发的开源性能测试工具,在性能测试中可支持模拟并发压测,但有 ...

最新文章

  1. kubelet配置cni插件_从零开始入门 K8s | 理解 CNI 和 CNI 插件
  2. android组件通讯 Intent-Action属性
  3. xman的思维导图快捷键_这个良心好用的思维导图软件,居然不用氪金充钱
  4. Int与String之间相互转换
  5. LeetCode 21. 合并两个有序链表 golang
  6. 遍历聚合对象中的元素——迭代器模式(四)
  7. OpenCV学习(13) 细化算法(1)(转)
  8. Nodejs学习笔记(十二)--- 定时任务(node-schedule)
  9. Zemax学习笔记——Zemax序列坐标系理解及坐标断点
  10. Edge 浏览器的收藏夹文档位置——最新版windows10和edge
  11. 如何使用Python3解二维码和编译二维码
  12. hive分隔符_Hive表字段、行、map默认分隔符
  13. 谷歌母公司一季度营收363亿美元 计提欧盟罚款后净利润仍超过66亿美元
  14. Java笨狗groovy学习笔记—Regular Expressions
  15. Greenplum6.x搭建_安装
  16. PPT学习资源和实用技巧
  17. 海量数据——TopK问题
  18. Windows server 2012R2下流媒体服务器的配置与管理
  19. pdfboxiText生成PDF文件格式及读取PDF文件内容的小示例--完美支持中文版
  20. 计算机图形学考试复习

热门文章

  1. bean validation校验方法参数_Springboot 使用校验框架validation校验
  2. Python中selenium的玩法,小朋友看了都说学会了
  3. python学什么东西_什么是Python?你应该学习和使用它的13个理由
  4. Java存储任意对象_浅析java设计模式(一)----异构容器,可以存储任何对象类型为其他类提供该对象...
  5. java apache.poi_Java利用apache的POI操作Excel
  6. mysql数据库腾讯云添加用户,解决腾讯云cdb的基础版mysql不支持新建账号
  7. 大端模式、小端模式、网络字节顺序与主机字节顺序
  8. iozone测试文件系统
  9. MySQL的sql优化
  10. 微信小程序连接本地接口(转)