最近尝试采用matlab中的神经网络工具包做些试验,但是数据的规模比较大,在模型训练的过程中,总是返回“Out

Of

Memory”错误,而不能继续训练。尝试了几种可能的解决方案,最后总算解决,至少运行到现在还没有出现这种错误。

增加虚拟内存:在查看任务管理器发现物理内存为2GB,虚拟内存为共6GB,而观察matlab在运行过程中使用的内存没有超过2GB,因此不存在内存不足的问题。因此增加虚拟内存的方法是不可行的。

使用PACK:PACK可以将matlab中的变量导出到磁盘中,以增加可用内存。但是尝试之后,没有解决问题。

减少变量的内存开销:目前使用的变量都是必须的变量,不能再减小了。

64位架构:采用64位的软硬件架构,目前实验室条件下不可行。

3GB切换(3GB

switch):由于在windows上运行matlab时,如果内存的使用超过约1.7G左右就要出现这种错误,而无论你有多大的内存也没用。幸好现在

在Windows XP上,MATLAB现在支持3GB切换(3GB switch)启动选项(boot

option),配置额外的1GB的可寻址内存到每个程序上。这增加了你可以储存到MATLAB workspace中资料的总量约到2.7

GB。这相当于33亿的精度值。此新增的内存区块和MATLAB使用剩下的(内存)并不是连续的,所以你不能建立一个数组来填满此空间。

具体做法:修改C:\ Boot.ini文件如下:

[boot loader]

timeout=30

default=multi(0)disk(0)rdisk(0)partition(2)\WINNT

[operating systems]

multi(0)disk(0)rdisk(0)partition(2)\WINNT="????" /3GB

注意后面的/3GB就是后加上的。重新启动系统再次运行matlab。

在采用了最后这种方法时,问题解决,至少运行了一段时间还没有出现上面的错误。

参考:

转自:http://hi.baidu.com/zxshow1983/blog/item/ecc77f23795c41569922ed70.html

另外,还有两篇文章可能有用,放在这先:

matlab内存溢出的解决方案

matlab内存溢出的解决方案(整理)

1)增加虚拟内存的方法是不可行的

2)使用PACK:PACK可以将matlab中的变量导出到磁盘中,以增加可用内存

3)减少变量的内存开销

4)64位架构:采用64位的软硬件架构

5)3GB 切换(3GB

switch):由于在windows上运行matlab时,如果内存的使用超过约1.7G左右就要出现这种错误,而无论你有多大的内存也没用。幸好现在

在Windows XP上,MATLAB现在支持3GB切换(3GB switch)启动选项(boot

option),配置额外的1GB的可寻址内存到每个程序上。这增加了你可以储存到MATLAB workspace中资料的总量约到2.7

GB。这相当于33亿的精度值。此新增的内存区块和MATLAB使用剩下的(内存)并不是连续的,所以你不能建立一个数组来填满此空间。

6)更有效的优化方案调整Java虚拟机可分配的内存大小

matlab

java.lang.OutOfMemoryError

Java虚拟机内存不够用了.可以增加最大内存设置.

1.

查找matlab根路径.在matlab命令行中敲入:matlabroot

显示根路径,如:C:\MATLAB7

2.查看当前Java虚拟机最大堆内存,

敲入:java.lang.Runtime.getRuntime.maxMemory

3.查看Java虚拟机版本.敲入:version

-java

4.在 $MATLAB\bin\$ARCH

路径下新建java.opts文件.

$MATLAB是根路径,例如C:\MATLAB7

$ARCH是系统架构.例如win32,则在C:\MATLAB7\bin\win32下新建java.opts文件.

5.用记事本打开java.opts文件,

对于不同的版本的Java虚拟机,输入:

The following table shows the

default settings MATLAB uses for versions of the JVM:

JVM Initial Heap

Size Max Heap Size

1.6.0 -Xms64m -Xmx128m (32-bit)

-Xmx196m (64-bit)

1.5.0 -Xms64m -Xmx96m (32-bit)

-Xmx128m (64-bit)

1.4.2 -Xms16m -Xmx96m

1.3.1 -Xms16000000 -Xmx64000000

1.2.2 -Xms16000000 -Xmx64000000

1.1.8 -ms16000000 -mx64000000

例如我的Java是1.4.2,在java.opts文件写入-Xmx96m,保存就ok啦

如果输入错误就报错:warning : Failed to start

to Java Virtual machine

6.

重启matlab,敲入java.lang.Runtime.getRuntime.maxMemory

显示最大内存改变,设置成功.

转自:http://hi.baidu.com/albertleemon/blog/item/d66384089786d5c262d986c4.html

Matlab 的内存分配机制

2011年04月23日 星期六 下午 02:19

1、创建和修改数组——基本思想是保持内存的连续性

(1)当为数组赋值时,Matlab在内存中分配连续的虚拟块,在另一个地方,将数组的类型和维数等保存为头信息。

(2)

当向数组增加新元素时,如果原来位置的连续内存区域可以容纳新增加的数据,则扩大分配的内存,然后增加元素;如果连续块不够大,需要先重新分配能够容纳原

有数据和新增数据的连续内存块,再将原有数据拷贝到新分配的内存中(在此期间,内存中会有原来数据的两份拷贝,增加了out of

memory的风险),并添加新的元素到新的块中,然后释放原来的内存。

(3)当删除数组元素时,先移除元素,再压缩原来分配的空间。

2、数组的拷贝

(1)当将一个数组赋值给另一个变量时,不会为新变量分配内存,新变量只是到原来数组的引用,直到新变量中元素值改变时,才会为其分配内存。

(2)通过参数传递给函数的数据,当数据内容发生改变时才会分配内存,函数内部新的数据通过返回值传递给调用该函数的函数。

3、数组头

(1)由于数组头占据存储空间(虽然不多),数据存放在几个大数组中要由于存放在多个小数组中。

(2)对结构体和元胞(cell)数组,Matlab不仅为他们创建头信息,还为结构体的每个字段和元胞数组的每个元素创建头信息,因此结构题和元胞数组消耗的内存与其创建方式有关。

(3)whos函数只能查看数据占用的存储空间,不会显示头信息占用的空间。

4、数据结构与内存

(1)8-bit、16-bit、32-bit、64-bit的有符号整型或无符号整型分别占用1、2、4、8字节空间,单精度、双精度浮点数分别占用4、8字节空间。

(2)复数的实部和虚部分别占用存贮空间,当修改实部或虚部时,会同时复制实部和虚部。

(3)当数组的元素绝大部分为0时,用稀疏矩阵存贮以节省空间。

5、内存占用计算

(1) 元胞数组占用的空间计算方法为:(header_size x number_of_cells) +

data,对于64位系统,header_size为112,查看header_size的方法: A = {[]}, whos A。A =

{1 2 3}, A = {[1 2 3]}, A = {{1 2

3}}占用的字节数分别为:112×3+8×3,112×1+8×3,112×4+8×3。

(2)64bit系统中结构体占用空间的计算方法:fields x ((112 x array elements) + 64)

+ data (32bit系统中将112改为60)。

转自:http://hi.baidu.com/jiyeqian/blog/item/63f7222aa11fac8d023bf679.html

matlab磁盘内存,Matlab内存不足问题的解决【转】相关推荐

  1. matlab 固态硬盘,电脑内存和固态硬盘有什么区别 电脑内存和固态硬盘对比【详解】...

    大多数人运用电脑一段时间以后,都感觉电脑运行速度没有以前快了.这不是心理作用哦,程序和文档日益增多,都会拖慢运行速度.电脑提速主要有两个思路升级内存和固态硬盘,那么内存和固态硬盘的区别在哪呢,一起来看 ...

  2. matlab:查看使用内存空间情况

    电脑内存占用情况 feature('memstats') 可以看到matlab的物理内存,交换页面,虚拟内存,最大连续可用内存块内存使用情况,其中Physical Memory (RAM)是物理内存, ...

  3. 磁盘不足导致内存溢出问题

    工作时候测试环境出现大面积服务挂掉,当重启服务后(脚本判断服务挂了之后会定时重启),一段时间后服务又挂掉了,这时候查看测试环境内存使用情况, 从图片可以看到内存只剩下200多M,buff缓存中的数据居 ...

  4. matlab bdir 排序,Matlab 2020b介绍及下载安装步骤

    文章目录 1. 按2. 产品介绍3. 安装要求4. 安装步骤5. 下载地址1. 按 MATLAB下半年版本R2020b来了 此版本较上半年有了新的产品及功能更新 APP Designer更好用 .MA ...

  5. matlab充分利用性能,Matlab高性能编程——代码优化和并行计算

    Jeremy Lin  @HQU Update: 2014/4/29 Matlab代码优化 Matlab是一种高级计算机语言,同时也是一个用于算法开发,数据可视化,数据分析和数值计算的交互式工作环境. ...

  6. matlab引擎函数,Matlab引擎库函数

    Matlab引擎库包含了一系列从外部应用程序调用和控制Matlab引擎的函数.下表列举了C语言的引擎库函数,这些函数后使用了eng前缀名 表 1 C语言引擎函数库 引擎函数 功能描述 engOpen ...

  7. matlab randi 函数,MATLAB中的randi函数

    randi Pseudorandom integers from a uniform discrete distribution.来自一个均匀离散分布的伪随机整数 R = randi(IMAX,N) ...

  8. matlab 倾斜矫正,matlab图像倾斜校正

    4 图像颜色畸变校正介绍图像颜色畸变现象可以是由摄像器材导致,也可以是由于真实环境本身就偏 色导致,还有的是由于图像放置过久氧化.老化导致.无论其产生的原因如何, 其校正方法都是类似的.如果用 Mat ...

  9. matlab思考,关于Matlab编程的思考(待续)

    Matlab编程的规范化思考 1.并行化 2.释放内存 3.需要调参的变量太多,可考虑将变量都放到一个结构体里面. 4.find(y),就是要找到y中那些非零项的指引 5.代码运行出现问题的时候,在命 ...

  10. matlab着色问题,着色问题matlab

    MATLAB 课程设计 设计题目:应用图像处理 班 级: 学...伪彩色增强实 质上只是一个图像的着色过程是一种...这次课程设计之后就可以自己动手解决 这个恼人的问题...... 复杂网络及其 ma ...

最新文章

  1. JS如何深度复制对象和数组,避免指针变量引用修改值
  2. 用Leangoo敏捷开发工具如何管理用户故事?
  3. C++ 的语言杂谈(一)--C++不是新手友好的
  4. 中间件业务在网易轻舟容器平台的性能调优实践
  5. PLM中BOM核心技术的研究[转]
  6. 核心动画--基本动画
  7. 【鲲鹏来了】鲲鹏迁移过程案例分享
  8. 大学计算机python考试题二叉树_leetcode 二叉树相关习题总结
  9. Gemini 2 for Mac(重复文件查找清理工具)
  10. 2016年的第一天上班,顺便开通了博客
  11. NSIS中文乱码问题
  12. base64原理(附代码) 换表脚本
  13. 数字后端概念——Wire Shape
  14. 【WLAN】【基础知识】WIFI那些事儿之DFS
  15. 智课雅思词汇---十一、spect是什么意思
  16. python:实现丢番图方程算法(附完整源码)
  17. React实例练习-响应式设计、数据绑定、列表渲染、删除单项
  18. 把生命放在美丽的焦距上——记桂林、阳朔、龙胜之旅
  19. Vue中components与component的区分
  20. Electron+Vue3+Vite+Element-Plus,保持软后台全速运行(解决循环过多导致的界面不刷新问题,保证窗口失去焦点后setTimeOut可用)

热门文章

  1. linux CPU压力测试stress
  2. ds18b20数字温度传感器特点及使用介绍
  3. python中fbncc_PythonBNCCorpusReader不能处理完整的bnc语料库
  4. stata令相关系数加显著性
  5. Eclipse安装php插件phpeclipse(转)
  6. 用GetData软件自动读取图中的数据
  7. c语言图形库 ege easyx,初识ege图形库
  8. 搜狗输入法 linux 源码,1.下载搜狗输入法for linux源码包:
  9. C++定时器和时间轮
  10. C++——判身份证号码真伪