声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 13443|回复: 1

[编程技巧] Matlab内存溢出错误 Out of memory(重新总结)

[复制链接]
发表于 2008-12-20 22:26 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
Matlab内存溢出错误 Out of memory
作者:alljoyland
Email: wjlmail1@163.com
HUST
matlab -nojvm(tips)
2008122021:34:04

a = zeros(200,200,10000);
??? Error using ==> zeros
Out of memory. Type HELP MEMORY for your options.

这个问题大多数是 矩阵太大,
因为单个矩阵太大而导致的这种错误,

解决办法
1.
稀疏矩阵
2.
化整为零
3.
内存加大,虚拟内存加大,采用64位的操作系统
4.
写入文件,而不是内存
5.
减少不必要的内存指出,如不保存中间变量

1,45 应该是最常见的办法化整为零
比如一个动态矩阵

A(200,200,1000)
可以分成 a(200,200,200) * 5
也就是每个A 分成5个小a

大块的矩阵不容易从系统得到

写入文件
fwrite
dlmwrite

化内存为外存

减少同时存在的大矩阵
有时候有些历史文件是可以不保存的
所以只要
一步 或者 两步,
不需要把每步都保存下来,所以不要的
立即销毁

内存释放原则
不要的中间变量马上销毁

Vista 64matlab


参看前辈帖子
http://forum.vibunion.com/forum/thread-26077-1-1.html
http://forum.vibunion.com/forum/thread-57860-1-1.html###
http://forum.vibunion.com/forum/thread-59532-1-1.html


http://forum.vibunion.com/forum/archiver/tid-35912.html






[ 本帖最后由 alljoyland 于 2008-12-20 22:30 编辑 ]

评分

3

查看全部评分

回复
分享到:

使用道具 举报

发表于 2008-12-28 22:08 | 显示全部楼层
能不能把这个内存释放掉呢
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-12-2 17:47 , Processed in 0.064009 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表