matlab提示内存不足


一、问题陈述
运行的矩阵或者数据占用内存特别大的时候,matlab就会报错,提示 out of memory ,即内存占用爆满了。
二、结论
先说结论,
1. 如果你的工作用经常出现内存不足的情况,别挣扎了,没的其他解决办法,唯有加内存条,上16G、32G等大容量内存条。(不用看本文了,赶快去买内存条)
2. 如果偶尔的出现了这种情况,可以通过一定技巧,可能会有点效果,那么请继续看本文。
三、查看matlab内存占用方法
3.1 键入命令 memory 查看
3.2 键入 system_dependent memstats 命令查看
3.3 解释上面命令作用
物理内存就是你的内存条的总内存,我的内存条总内存是32GB,然后就是看看你的程序运行占用的多少内存,虚拟内存一般是够用的,也可以增加虚拟内存大小,通过调用硬盘的内存来存储数据。
四、改善办法
4.1 减小java堆大小
操作流程见下图,改好了之后,需要重新启动一下matlab。
对比java对改变前后的效果(见下图),很明显我们发现当增大java堆大小之后,最大数组的容许的内存容量变小了。
至于java堆内存大小有什么用,可以看下面matlab官方的解释:
4.2 增加虚拟内存方法
方法流程参见下图,一般默认调用的是C盘的硬盘内存。
个人感觉这个虚拟内存起作用不大,还是会出现 out of memory
4.3 优化程序
下面只介绍几个最有用的效果,实实在在的可以起到作用,其他的都是胡扯。
1. 给数组预分配内存大小;
2. 及时清除中间过程产生的不需要分析的变量,如clear A;
3. 顶行加个 clear all;