Help out of memory的一些总结
来源:互联网 发布:100 是淘宝极限词吗 编辑:程序博客网 时间:2024/06/02 05:13
问题一:Matlab是如何存储矩阵的
Matlab中矩阵是以Block,也就是块的形式存储的。也就是说,当Matlab在为即将存储的矩阵划分块时,如果没有相应大小的连续内存,即使实际内存没有被完全使用,他还是会报告“Out of Memory”。问题二:如何高效使用Memory
由于在使用的过程中,由于存储单元的不断的被分配和清除,内存会被分割成不连续的区域,这是很容易造成“Out of Memory”。1.为矩阵变量预制内存而不是动态分配
在动态分配的过程中,由于开始Matlab所用的Block随着矩阵的增大而连续的为此矩阵分配内存,但是由于Block的不连续性,很有可能最开始分配的Block不能满足存储的需要,Matlab只好移动此Block以找到更大的Block来存储,这样在移动的过程中不但占用了大量的时间,而且很有可能它找不到更大的块,导致Out of Memory。而当你为矩阵变量预制内存时,Matlab会在计算开始前一次性找到最合适的Block,此时就不用为变量连续的分配内存。
比较下面两个程序:
for k = 2:1000
x(k) = x(k-1) + 5;
end
x = zeros(1, 1000);
for k = 2:1000
x(k) = x(k-1) + 5;
end
显然,第二个更好!最好的方法是,在程序一开始就位所有大的矩阵变量预制存存储单元!
2.尽量早的分配大的矩阵变量
Matlab使用heap method管理内存。当在Matlab heap中没有足够的内存使用时,它会向系统请求内存。但是只要内存碎片可以存下当前的变量,Matlab会重新使用内存。
比如:
a = rand(1e6,1);b = rand(1e6,1);
使用大约15.4 MB RAM
c = rand(2.1e6,1);
使用近似16.4 MB RAM:
a = rand(1e6,1);
b = rand(1e6,1);clear
c = rand(2.1e6,1);
使用32.4 MB RAM。因为Matlab不能使用a、b被clear的空间,因为它们均小于2.1 MB,而同时它们也很可能是不连续的。
最好的方法:
c = rand(2.1e6,1);
clear
a = rand(1e6,1);
b = rand(1e6,1);
使用16.4 MB RAM
3.尽量避免产生大的瞬时变量,当它们不用的时候应该及时clear。
4.尽量的重复使用变量(跟不用的clear掉一个意思)
5.将矩阵转化成稀疏形式
如果矩阵中有大量的0,最好存储成稀疏形式。稀疏形式的矩阵使用内存更少,执行时间更短。
例如:1000×1000的矩阵X,它2/3的元素为0,使用两种存储方法的比较:
5.使用pack命令
当内存被分为很多碎片以后,其实本身可能有很大的空间,只是没有作构的连续空间即大的Block而已。如果此时Out of Memory,此时使用pack命令可以很好的解决此问题。6.如果可行的话,将一个大的矩阵划分为几个小的矩阵,这样每一次使用的内存减少。
7.增大内存
问题三: Increase the size of the swap file.
wap space的设置与使用的操作系统有关,具体的如下:
1.UNIXInformation about swap space can be procured by typing pstat -s at the UNIX command prompt. For detailed information on changing swap space, ask your system administrator.
2.Linux
Swap space can be changed by using the mkswap and swapon commands. For more information on the above commands, type man followed by the command name at the Linux prompt.
3.Windows NT
Follow the steps shown here: Right-click the My Computer icon, and select Properties. Select the Performance tab and click the Change button to change the amount of virtual memory.
4.Windows 2000
右键“我的电脑”->属性->高级->性能->设置,从而改变其虚拟内存。5.Windows XP
右键“我的电脑”->属性->高级->性能->设置,从而改变其虚拟内存。
问题四:尽量少时用系统资源(对于Windows)
Windows中字体、窗口等都是要占用系统资源的,所以在Matlab运行时尽量不要打开不用的窗口。问题五:Reloading Variables on UNIX Systems
由于我不使用UNIX系统,这里不介绍,直接从Help中粘过来On UNIX systems, MATLAB does not return memory to the operating system even after variables have been cleared. This is due to the manner in which UNIX manages memory. UNIX does not accept memory back from a program until the program has terminated. So, the amount of memory used in a MATLAB session is not returned to the operating system until you exit MATLAB.
To free up the memory used in your MATLAB session, save your workspace variables, exit MATLAB, and then load your variables back in.
0 0
- Help out of memory的一些总结
- MATLAB“out of memory"的一点总结
- Out of memory. Type HELP MEMORY for your options (
- Out of memory. Type HELP MEMORY for your options
- Out of memory问题总结
- Out of memory问题总结
- Android 内存溢出(Out Of Memory)的总结
- Android 内存溢出(Out Of Memory)的总结
- Android 内存溢出(Out Of Memory)的总结
- Android 内存溢出(Out Of Memory)的总结
- Android 内存溢出(Out Of Memory)的总结
- 关于Android out of memory解决办法的总结
- Android 内存溢出(Out Of Memory)的总结
- Android之内存溢出(Out Of Memory)的总结
- zz:Android 内存溢出(Out Of Memory)的总结
- 关于Android out of memory解决办法的总结
- out of memory的解决方案
- 【转】Matlab Out of memory问题总结
- LINK:fatal error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏
- 为什么一直报莫名其妙的错误
- Android 5.0 RippleEffect
- PMD
- uboot.2015.07移植之驱动NOR Flash(6)
- Help out of memory的一些总结
- 在AndroidStudio中如何显示出依赖库的本地存储路径
- 设计模式之单例模式
- Oracle job procedure 存储过程定时任务
- js判断移动设备 并跳转到手机版
- Toolbar + DrawerLayout快速实现高大上菜单侧滑
- uva11178
- sqlite3中的数据类型
- pypi 及如何上传自己写的库文件
原创粉丝点击
热门IT博客
热门问题
老师的惩罚
人脸识别
我在镇武司摸鱼那些年
重生之率土为王
我在大康的咸鱼生活
盘龙之生命进化
天生仙种
凡人之先天五行
春回大明朝
姑娘不必设防,我是瞎子
海水鱼
海水鱼有哪些
二乐海水鱼作品
鱼为什么不怕海水的咸
海水观赏鱼品种图鉴
海水鱼图片及名称
海水鱼图片
海水鱼种类
海水鱼图鉴
海水鱼吧
海缸论坛
舒适汇健步鞋
海沃德
海沃德老婆
海沃德妻子
海沃格床垫怎么样
海沃氏
海沃氏家具
海沙虫
厦门 海沧区 花店
厦门海沧大桥旅游区
厦门海沧区住宿
海沧区送花网
海沧生活区二手房
厦门市海沧区职业中专学校
厦门海沧新阳工业区招聘
厦门海沧区
海沧马銮湾
厦门海沧湾公园酒店
海河奶
海泉湾温泉酒店
海泉湾维景大酒店
青岛海泉湾酒店
海泉湾维景酒店
海泉湾度假区
海泉湾门票
青岛海泉湾
青岛港中旅海泉湾
海泉湾神秘岛
海泉湾酒店
海泉湾电话