转自:http://hi.baidu.com/bi%CB%AB%C9%FA%BB%A8/blog/item/5ab86c38ac2f45e715cecbab.html

1,确保内存的连续性
Matlab 中数组必须占用连续分配的内存段
当无法为新建的数组分配连续的内存段的时候
Out of Memory 就会出现
由于反复分配和释放数组会使可用的连续内存段减少
实际操作中可如下处理:
a,将不用的数据存储在工作目录,让下一步计算需要的单独存储
b,用clear清空内存
c,载入需要计算的变量
d,用 pack 命令
这是将内存中的数组写入硬盘,然后重建这些数组,以减少内存碎片

可以用命令 feature('memstats')来查看内存的使用情况

2,减少使用双浮点数
Matlab 默认的数字类型是双精度浮点数double
每个双浮点数占用 8 个字节
对于一些整数操作来说,使用双浮点数显得很浪费
在很多精度要求不高的情况下,使用4个字节的单浮点数 single
可以减少一半的内存
关于单、双浮点数的精度对照如下,以便根据需要选择使用:

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

除了升级内存和升级64位系统外,下面几个方法也是解决之道。

# 增加虚拟内存
# 采用PACK (在命令行输入 pack 整理内存空间)
# 采用3GB 开关启动系统(修改 c盘根目录 boot.ini 启动选项加上 /3G 例如:multi(0)disk(0)rdisk(0)partition(1)/WINDOWS="Microsoft Windows XP Professional" /noexecute=optin /fastdetect /3G

# 优化程序,减少变量 (使用稀疏矩阵 sparse ) save 保存变量 clear 变量 load 变量,需要时再读出来
# 如果必有必要,不要启动java虚拟机,采用matlab -nojvm启动 (在快捷方式属性里面的 "..../matlab.exe") 改为("...../matlab.exe" - nojvm)
#关闭Matlab Server

# 使用 单精度 single 短整数替代 双精度。

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://my.donews.com/deng/2006/09/24/vijgqxehmkxiruywdauvxyiafogtskeymhyw/ 用 Matlab 进行大规模科学计算或仿真时 ...

  4. 操作系统概念学习笔记 16 内存管理(二) 段页

    操作系统概念学习笔记 16 内存管理 (二) 分页(paging) 分页(paging)内存管理方案允许进程的物理地址空间可以使非连续的.分页避免了将不同大小的内存块匹配到交换空间上(前面叙述的内存管 ...

  5. Linux任督二脉之内存管理(二) PPT

    五节课的第二节课-内存的动态申请和释放 * slab.kmalloc/kfree./proc/slabinfo和slabtop * 用户空间malloc/free与内核之间的关系 * mallopt ...

  6. Linux内存管理二(页表)

    1.综述 用来将虚拟地址空间映射到物理地址空间的数据结构称为页表,即页表用于建立用户进程的虚拟地址空间和系统物理内存(内存.页帧)之间的关联 实现两个地址空间的关联最容易的方法是使用数组,对虚拟地址空 ...

  7. 高端内存映射之kmap持久内核映射--Linux内存管理(二十)

    日期 内核版本 架构 作者 GitHub CSDN 2016-09-29 Linux-4.7 X86 & arm gatieme LinuxDeviceDrivers Linux内存管理 在内 ...

  8. BOOST内存管理(二) --- boost::pool

    Boost库的pool提供了一个内存池分配器,用于管理在一个独立的.大的分配空间里的动态内存分配.Boost库的pool主要适用于快速分配同样大小的内存块,尤其是反复分配和释放同样大小的内存块的情况. ...

  9. 内存管理(二) - MRC关键字解读

    本篇主要学习以下几个知识点 alloc/reatin/release/dealloc 理解 autorelease 理解 autorelease GUN 实现 autorelease 苹果 实现 原文 ...

最新文章

  1. 环视感知网络的多任务和单任务之争
  2. PDF审计工具peepdf
  3. 《Adobe Dreamweaver CC经典教程》——导读
  4. CGCTF-Web-签到2
  5. 养成一个习惯有多难?不如先从一个小目标开始
  6. Android Native C Log
  7. 多线程学习笔记4 互斥体
  8. html5学习笔记(section)
  9. MacOS入门技巧分享
  10. linux基础命令一、
  11. 取消UltraEdit提示“文件可能不是DOS格式”
  12. matlab 7.0安装教程
  13. sunray破解版使用方法
  14. 酱爆如花四眼仔,周星驰金牌配角不止吴孟达,他们名字都没人知道
  15. 常用youtube快捷键,让看视频学技术起飞
  16. 商户订单信息语音通知功能如何实现?
  17. 三星Q990B全景声回音壁评测
  18. 力扣1438——绝对差不超过限制的最长连续子数组(滑动窗口+单调队列)
  19. Autojs 微信添加好友脚本
  20. Python:strip() 函数

热门文章

  1. keras 的 example 文件 mnist_hierarchical_rnn.py 解析
  2. 自定义apt升级脚本
  3. 洛谷 P2468 粟粟的书架 二分(主席树+前缀和)
  4. 【TensorFlow2.0】(5) 数学计算、合并、分割
  5. 数字图像处理——第五章 图像复原与重建
  6. 在Ubuntu 14.04 64bit上安装百度云Linux客户端BCloud
  7. 调试视频网页js脚本的方法
  8. 安装apache的时候80端口被PID为4的系统进程所占用
  9. 雪花算法 Java 版
  10. 【并行计算-CUDA开发】从零开始学习OpenCL开发(一)架构