声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 13391|回复: 26

[编程技巧] matlab 的内存如何管理?

[复制链接]
发表于 2007-1-2 11:23 | 显示全部楼层 |阅读模式

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

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

x
我编写了一个MATLAB程序,全局形函数的拉格朗日变分处理复杂结构的振动响应,但是发现假设振型只取10阶,750兆内存很快就不够了 out of memory ,请问matlab 有没有类似Fortran的虚拟内存管理?是不是我必须要扩充内存啊? 
回复
分享到:

使用道具 举报

发表于 2007-1-2 13:37 | 显示全部楼层
虚拟内存 在 我的电脑  属性中设置。
发表于 2007-1-2 15:49 | 显示全部楼层
原帖由 confer 于 2007-1-2 11:23 发表
我编写了一个MATLAB程序,全局形函数的拉格朗日变分处理复杂结构的振动响应,但是发现假设振型只取10阶,750兆内存很快就不够了 out of memory ,请问matlab 有没有类似Fortran的虚拟内存管理?是不是 ...



优化一下代码,具体参照精华贴。matlab能够允许你使用的存储空间(内存+虚存)大概是1G,所以,即使你的电脑有2g内存,虚拟内存开到2g,共4g,也是无用的
发表于 2007-1-2 15:56 | 显示全部楼层
32位版本中Matlab的变量只能占1.2GB内存
发表于 2007-1-2 15:58 | 显示全部楼层
原帖由 happy 于 2007-1-2 15:56 发表
32位版本中Matlab的变量只能占1.2GB内存



happy教授补充的是,呵呵~~~
发表于 2007-1-2 16:01 | 显示全部楼层
原帖由 eight 于 2007-1-2 15:58 发表



happy教授补充的是,呵呵~~~


内存问题很麻烦,有的时候变量不是很大,虚拟内存设置的已经很大了仍然会出现out of Memory的问题
发表于 2007-1-2 16:03 | 显示全部楼层
另外matlab的运行也特别损耗内存,运行不了多久其占用的内存就NN大,有的时候使用matlab -nojvm来启动matlab是个不错的选择

评分

1

查看全部评分

发表于 2007-1-2 16:04 | 显示全部楼层
原帖由 happy 于 2007-1-2 16:01 发表


内存问题很麻烦,有的时候变量不是很大,虚拟内存设置的已经很大了仍然会出现out of Memory的问题



嗯,同感,有些时候即使用clear all也不行,要退出matlab然后再重新运行才行。感觉matlab在释放内存上比较麻烦
发表于 2007-1-2 16:07 | 显示全部楼层
原帖由 eight 于 2007-1-2 16:04 发表

嗯,同感,有些时候即使用clear all也不行,要退出matlab然后再重新运行才行。感觉matlab在释放内存上比较麻烦



这种情况个人估计是Java虚拟机在搞鬼,不启动Java虚拟机一般能够解决
发表于 2007-1-2 16:07 | 显示全部楼层
原帖由 happy 于 2007-1-2 16:03 发表
另外matlab的运行也特别损耗内存,运行不了多久其占用的内存就NN大,有的时候使用matlab -nojvm来启动matlab是个不错的选择



嗯。matlab -nojvm 这个不错,刚试了一下,启动速度很快
发表于 2007-1-2 16:08 | 显示全部楼层
原帖由 happy 于 2007-1-2 16:07 发表



这种情况个人估计是Java虚拟机在搞鬼,不启动Java虚拟机一般能够解决



谢谢教授指点
发表于 2007-1-2 16:18 | 显示全部楼层
out of Memory问题处理方法简单总结一下:

1. 增加虚拟内存
2. 采用PACK
3. 条件允许的话采用64位系统
4. 采用3GB switch
5. 优化程序,减少变量
6. 如果必有必要,不要启动java虚拟机,采用matlab -nojvm启动
7. 关闭Matlab Server

目前就想起来这些,欢迎大家补充

评分

1

查看全部评分

发表于 2007-1-2 16:23 | 显示全部楼层
原帖由 happy 于 2007-1-2 16:18 发表
out of Memory问题处理方法简单总结一下:

1. 增加虚拟内存
2. 采用PACK
3. 条件允许的话采用64位系统
4. 采用3GB switch
5. 优化程序,减少变量
6. 如果必有必要,不要启动java虚拟机,采用matlab -no ...



第5点我觉得应该改为:5. 优化程序,减少变量,并减少矩阵维数及精度要求,必要时(如二维以下的索引矩阵)使用稀疏矩阵
发表于 2007-1-2 16:27 | 显示全部楼层
原帖由 eight 于 2007-1-2 16:23 发表

第5点我觉得应该改为:5. 优化程序,减少变量,并减少矩阵维数及精度要求,必要时(如二维以下的索引矩阵)使用稀疏矩阵



不管是减少矩阵维数还是对稀疏矩阵的处理都是基于减少变量的思想,个人觉得没必要单独提出来
而至于精度,matlab的计算精度都是双精度的,简单的通过调整显示精度没有什么意义
发表于 2007-1-2 16:30 | 显示全部楼层
原帖由 happy 于 2007-1-2 16:27 发表



不管是减少矩阵维数还是对稀疏矩阵的处理都是基于减少变量的思想,个人觉得没必要单独提出来
而至于精度,matlab的计算精度都是双精度的,简单的通过调整显示精度没有什么意义



不是显示精度的问题,是如果需要用到的变量的值只是0~255之间,那么定义 zeros(m,n,'uint8') 比 zeros(m,n) 节省更多的空间,这在逻辑矩阵的申请时尤为明显。这在申请的矩阵很大时尤为重要,在我的经验中,后者经常出现out of memory。

[ 本帖最后由 eight 于 2007-1-2 16:32 编辑 ]
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

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

GMT+8, 2024-11-29 04:43 , Processed in 0.060974 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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