转自:http://my.donews.com/deng/2006/09/24/vijgqxehmkxiruywdauvxyiafogtskeymhyw/

用 Matlab 进行大规模科学计算或仿真时,内存是一个需要时常注意的问题。当你写的 Matlab 程序跳出“Out of Memory” 时,以下几点措施是需要优先考虑的解决方法:

1. 确保内存的连续性

Matlab 中数组必须占用连续分配的内存段,当无法为新建的数组分配连续的内存段的时候,”Out of Memory” 就会出现。由于反复分配和释放数组会使可用的连续内存段减少,因此当 Matlab 刚刚启动时其连续内存最多,此时往往可以新建非常大的数组,这一点可以用命令 feature(‘memstats’)(在 7.0 版本以上)看出。如果现实的最大连续内存段很小,但实际可用内存(非连续的)仍旧很多,则表明内存中碎片太多了。此时可以考虑用 pack 命令,pack 命令的作用就是将所有内存中的数组写入硬盘,然后重新建立这些数组,以减少内存碎片。此外,在命令行或者程序中都可以使用 clear 命令,随时减少不必要的内存。

2. 3GB 开关

由于32位 Windows 操作系统的限制,每个进程只能使用最多 2GB 的虚拟内存地址空间,因此 Matlab 的可分配内存也受到相应的限制。Matlab 7.0.1 引进了新的内存管理机制,可以利用 Windows 的 3GB 开关,使用 3GB 开关启动的 Windows 每个进程可以在多分配 1 GB 的虚拟地址空间,具体的操作方法可见:http://www.mathworks.com/support/tech-notes/1100/1106.html

3. 减少使用双浮点数

Matlab 默认的数字类型是双精度浮点数 (double),每个双浮点数占用 8 个字节。对于一些整数操作来说,使用双浮点数显得很浪费。在 Matlab 中可以在预先分配数组时指定使用的数字类型如以下命令:zero(10, 10, ‘uint8′) 。对于浮点数,在很多精度要求不高的情况下,可以使用4个字节的单浮点数 (single),可以减少一半的内存。关于单、双浮点数的精度对照如下,以便根据需要选择使用:

single: 精度 (1.1921e-007) 最大数 (3.4028e+038)
double: 精度 (2.2204e-016) 最大数 (1.7977e+308)

matlab内存管理相关推荐

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

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

  2. matlab内存管理工具,[转载]MATLAB内存管理

    今天用Matlab跑程序,由于数据量太大,又出现 Out of memory. Type HELP MEMORY for your options.的问题.看到这篇文章非常实用,转过来方便查阅~ 用 ...

  3. matlab内存管理(二)

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

  4. spark从入门到精通spark内存管理详解- 堆内堆外内存管理

    前言 Spark作为一个基于内存的分布式计算引擎,其内存管理模块在整个系统中扮演着非常重要的角色.理解Spark内存管理的基本原理,有助于更好地开发Spark应用程序和进行性能调优.本文将详细介绍两部 ...

  5. iOS 开发:彻底理解 iOS 内存管理(MRC 篇)

    本文首发于我的个人博客:「程序员充电站」 文章链接:「传送门」 本文更新时间:2021年08月17日17:11:59 本文是 「iOS 开发:彻底理解 iOS 内存管理」系列的「MRC 篇」. 用来对 ...

  6. jar包部署shell脚本编写,在服务器上部署jar包,在Linux服务器上部署服务,设置编码格式,设置内存管理

    准备步骤: 1.安装java环境,知道java安装目录 2.将jar包拖放或发送至服务器中(目录自定义) 一.编写shell脚本,将以下代码放在shell脚本中,将shell脚本放在jar包同级目录下 ...

  7. 垃圾回收 内存管理 python

    20220225 https://mp.weixin.qq.com/s/94SmSNEkwmz-Eu-hBUo0Lg Python的内存管理机制 在windows 中直接在任务管理其中关掉python ...

  8. BEP 7:CUDA外部内存管理插件(下)

    BEP 7:CUDA外部内存管理插件(下) Numba依赖 向库中添加EMM插件的实现自然会使Numba成为库的依赖项,而以前可能没有.为了使依赖关系可选,如果需要的话,可以有条件地实例化并注册EMM ...

  9. BEP 7:CUDA外部内存管理插件(上)

    BEP 7:CUDA外部内存管理插件(上) 背景和目标 在CUDA阵列接口使得能够共享不同的Python之间的数据库的访问CUDA设备.但是,每个库都与其它库区别对待.例如: • Numba在内部管理 ...

最新文章

  1. DeepLab: Semantic Image Segmentation with Deep Convolutional Nets, Atrous Convolution--阅读笔记
  2. 2个月精通Python爬虫——3大爬虫框架+6场实战+分布式爬虫,包教包会
  3. fastDFS同步问题讨论
  4. 学习Unix/Linux编程要学些什么
  5. Css中图片局部放大,将图片中局部放大效果
  6. 新一代Hologres实时数仓大揭秘
  7. 内网网段划分ciso交换机配置
  8. 字典,和字典的增删改查
  9. php开发面试题---面试常用英语(你能介绍你自己吗?)
  10. LeetCode 647 回文子串
  11. 资讯美国悬赏1000万美元追捕勒索黑客、能源行业成为网络钓鱼攻击“重灾区”|11月8日全球网络安全热点
  12. ArcGIS入门 (一)
  13. GSM模块通过服务器或GSM内部获取网络时间 网络授时
  14. stm32 服务器 文件系统,stm32关于fat16/32的文件系统底层
  15. gaster字体转换器_哥特字体在线生成,哥特字体在线生成器,哥特字体在线转换
  16. 用了五年 VS Code ,我决定换成 JetBrains……
  17. 5G消息、聊天机器人和小程序
  18. Hard-Margin SVM(支持向量机)
  19. 我喜欢的画家傅志伟先生的油画作品发几张来给大家一起欣赏
  20. ISM330DHCXTR IMU-惯性测量单元 工业物联网 运动传感器

热门文章

  1. Python+OpenCV创建级联文件(Windows7/10环境)
  2. 基于YOLO的手部检测和计数实现(课程设计,训练和测试)(1)
  3. xk3190串口通讯JAVA开发包_常用品牌plc通讯协议汇总学习
  4. 剑指offer:面试题26. 树的子结构
  5. Spring基础面试题(一)
  6. 5.html基础标签:块级+行级元素+特殊字符+嵌套规则
  7. Why Sleeping May Be More Important Than Studying
  8. 小程序地图的使用笔记
  9. [bzoj1054][HAOI2008]移动玩具
  10. 综合性深入的技术文章-20161103