MATLAB代码显示内存不足的解决方法
总结了下大家对于运行MATLAB代码,显示内存不足的问题,在网上进行调研,总结如下:
一般out of memenry存在以下几种情况:
1、 变量需要的存储空间超过了可用的内存空间
2、 数据需要的存储空间,超过内存中最大的可用连续存储空间
3 、程序和问题求解方法的设计不周,导致内存溢出。
在MATLAB命令窗里运行 system_dependent memstats,可以看到内存的使用情况。
1. 增加虚拟内存
Windows XP,右键“我的电脑”->属性->高级->性能->设置,从而改变其虚拟内存。
Windows 7,右键“计算机”->属性->(左边栏)高级系统设置->高级->(性能)设置->高级->(虚拟内存)更改,建议物理内存的两倍左右,如果物理内存已经3G+,那就不用调整了。
2. 插根内存条
3. 换成64位的软件和操作系统
4. 采用3GB开关启动系统:
由于32位 Windows 操作系统的限制,每个进程只能使用最多 2GB 的虚拟内存地址空间,因此 Matlab的可分配内存也受到相应的限制。Matlab 7.0.1 引进了新的内存管理机制,可以利用 Windows 的 3GB 开关,使用3GB 开关启动的 Windows 每个进程可以在多分配 1 GB 的虚拟地址空间。具体做法是:修改C盘根目录 boot.ini启动选项加上 /3G,例如:
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS=“Microsoft Windows XPProfessional” /noexecute=optin /fastdetect /3G
5. 使用GPU
6. 如果有必要,不要启动java虚拟机,采用matlab -nojvm启动 (在快捷方式属性里面的"…/matlab.exe") 改为("…/matlab.exe" - nojvm)
7. 关闭Matlab Server
控制面板-管理工具
8. 使用pack命令
当内存被分为很多碎片以后,其实本身可能有很大的空间,只是没有作构的连续空间即大的Block而已。如果此时Out of Memory,此时使用pack命令可以很好的解决此问题。
**9.**尽量少使用系统资源(对于Windows)
Windows中字体、窗口等都是要占用系统资源的,所以在Matlab运行时尽量不要打开不用的窗口。
10. 对代码进行优化:
1)多数情况是你的计算中间结果太大了,简单的处理办法是把不需要的中间结果在迭代退出或者进入下一次之前clear掉。(尽量避免产生大的瞬时变量,当它们不用的时候应该及时clear)
2)将普通矩阵转换成稀疏矩阵来处理,如果矩阵中有大量的0,最好存储成稀疏形式。稀疏形式的矩阵使用内存更少,执行时间更短。
3)将矩阵进行分块处理,如果可行的话,将一个大的矩阵划分为几个小的矩阵,这样每一次使用的内存减少。
4)分布式矩阵,并行工具箱的功能。
5)为矩阵变量预制内存而不是动态分配:
在动态分配的过程中,由于开始Matlab所用的Block随着矩阵的增大而连续的为此矩阵分配内存,但是由于Block的不连续性,很有可能最开始分配的Block不能满足存储的需要,Matlab只好移动此Block以找到更大的Block来存储,这样在移动的过程中不但占用了大量的时间,而且很有可能它找不到更大的块,导致Out of Memory。而当你为矩阵变量预制内存时,Matlab会在计算开始前一次性找到最合适的Block,此时就不用为变量连续的分配内存。
6)尽量早的分配大的矩阵变量:
Matlab使用heap method管理内存。
当在Matlab heap中没有足够的内存使用时,它会向系统请求内存。
但是只要内存碎片可以存下当前的变量,Matlab会重新使用内存。
所在在大内存变量clear以后,新建的小内存变量仍可以使用那部分内存空间,但相反就不行了。比如说a变量4M,b、c、d、e分别为1M,如果a被clear以后定义bcde,则可以使用a的空间,如果clear b,c,d,e以后,假如这四个变量不是连续的,那么a就不能使用它们释放的内存。
还有很多措施,请见MathWorks社区
https://ww2.mathworks.cn/help/matlab/matlab_prog/resolving-out-of-memory-errors.html
MATLAB代码显示内存不足的解决方法相关推荐
- qq 游戏计算机内存不足,腾讯手游助手显示内存不足的解决方法
很多游戏玩家都喜欢使用腾讯手游助手来玩游戏,然而在玩的时候,难免会遇到一些问题,比如常见的启动时显示内存不足的情况,遇到这样的情况该怎么办呢,其实只需要设置一下即可,本文就给大家带来腾讯手游助手显示内 ...
- android拍照图片如何存储空间不足,手机照相显示内存不足怎么办 解决方法【详解】...
用手机来拍照,这已经成为手机不可或缺的一个重要功能.手机拍照时,显示内存不足,该怎么办?关键时刻怎么可以没有内存! 下面一起来学习手机照相显示内存不足的解决方法. 1.当去旅游或是出差的时候,原本打算 ...
- GX works2 三菱PLC 显示注释后代码行变宽的解决方法
GX works2 三菱PLC 显示注释后代码行变宽的解决方法 解决前 没显示注释前 --------------------------------------------------------- ...
- 新浪服务器显示蓝屏05c代码,互联网学问:蓝屏代码0x00000050的原因及解决方法...
今天小编跟大家讲解下有关蓝屏代码0x00000050的原因及解决方法 ,相信小伙伴们对这个话题应该有所关注吧,小编也收集到了有关蓝屏代码0x00000050的原因及解决方法 的相关资料,希望小伙伴们看 ...
- 计算机上没有足够的可用内存无法完成扫描,windows照片查看器无法显示此图片,因为计算机上的可用内存可能不足解决方法...
win7查看照片显示内存不足怎么办呢?有用户使用win7照片查看器打开图片时提示:windows照片查看器无法显示此图片,因为计算机上的可用内存可能不足.但是电脑硬件配置足够高,内存也不小,那么遇到这 ...
- linux 省内存的桌面,Linux_在Linux中可视化显示内存占用情况的方法,物理内存不足对Linux桌面系统 - phpStudy...
在Linux中可视化显示内存占用情况的方法 物理内存不足对Linux桌面系统和服务器系统的性能影响都很大.当你的计算机变慢时,要做的第一件事就是释放内存.尤其是在多用户环境以及执行关键任务的服务器环境 ...
- 2021-09-25 关于启动代码出现炸内核的解决方法
notebook关于启动代码出现炸内核的解决方法 在安装配置pycharm的后,运行import torch as t 就出现了炸内核的情况,后来知道是因为安装notebook的时候多点了一个东西,导 ...
- java frame 不显示_win7系统下eclipse不显示JFrame界面的解决方法
有不少win7旗舰版系统用户在使用eclipse的时候,遇到了不显示JFrame界面的情况,想必很多用户有遇到过这样的情况吧,接下来给大家讲解一下win7系统下eclipse不显示JFrame界面的解 ...
- linux命令框显示中文乱码_CentOS终端命令行显示中文乱码的解决方法
这篇文章主要介绍了CentOS终端命令行显示中文乱码的解决方法,以及测试方法和缺少中文字体时的解决方法,需要的朋友可以参考下 安装CentOS的时候选择了中文,结果在终端不能显示中文,都是乱码,解决方 ...
最新文章
- 第十六届智能车竞赛华南赛区纪实
- OpenCV调整彩色图像的饱和度和亮度
- android 资源引用 自定义标题栏
- LeetCode OJ:Combination Sum III(组合之和III)
- 资源放送丨《Oracle存储过程性能分析案例》PPT视频
- 有必要月底Linux内核,如何确定linux内核是否会在月底插入闰秒
- ios 读取各种类型文件
- 力扣题目——25. K 个一组翻转链表
- K210系列第一个示例程序
- 水中机器人电控方案设计
- GIF 格式图片的存储和压缩 Node.js实现
- 表单的js验证框架,只提供提示信息及正则表达式即可自动验证及提示
- Problem - 1077E - E. Thematic Contests(暴力+二分)
- 遇到RAID5阵列硬盘出现问题的情况该如何解决?
- 让人惊愕的coffee spitter
- 如何用七牛云上传音乐生成外链
- 数据集市是什么?数据集市和数据仓库有什么区别
- sklearn使用入门
- Android系统工作资料被锁定,您需要知道的有关安卓屏幕锁定设置的所有内容
- Python3开发 语法(三)
热门文章
- linux xampp php5.6,xampp for linux
- 懒人必备,自动识别语音给视频添加字幕
- 怎样新建PDF文件 PDF新建文件的窍门
- 病毒源代码Java_金猪报喜病毒源码 - 开源中国社区.pdf
- 「 程序员的理财与风险控制」让财富跟你一起持续成长:增额终身寿
- cdr文件用什么打开?(cdr文件打开方式汇总)
- maven 插件 转
- python语句的基本框架开会_跟我学Python从小白到入门 之 Part 4 操作列表002
- 计算机审计在预算执行应用,计算机在金融监管部门预算执行审计中的应用
- 通信工程实施的详细过程以及水晶头与网线馈线的接法