凡亿教育-丽丽
凡事用心,一起进步
打开APP
公司名片
凡亿专栏 | 敲指令就占几G内存,MATLAB不是无故占用
敲指令就占几G内存,MATLAB不是无故占用

在MATLAB命令行输入简单指令后,软件瞬间分配几个G的内存,任务管理器里内存占用直接飙升,很多用户误以为是软件出了bug。这类异常大多是隐性操作触发了大内存分配,针对性调整就能解决。

6.png

1. 隐式全变量复制

部分指令执行时会隐式复制整个工作区的大型数组。

哪怕只是对数组做简单的维度转置,MATLAB也会在后台生成一份完整的副本,瞬间占用数G额外内存。

2. 自动日志缓存堆积

新版本默认开启的命令行历史全量缓存,会把所有操作生成的临时数据存入内存。

长时间运行后,历史缓存会逐步累积大量冗余数据,单次指令触发缓存刷新时,就会出现内存突增的情况。

3. 并行池自动启动

部分指令会自动唤醒后台并行计算池,启动多个worker进程。

每个worker进程都会独立分配数百兆内存,瞬间累加起来就会达到几G的内存占用。

4. 快速优化方案

给大型数组操作添加in-place修饰符,避免隐式生成数据副本。

关闭自动启动并行池的选项,定期清理命令行历史缓存,就能避免单次指令触发异常大内存分配。


本文凡亿教育原创文章,转载请注明来源!

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表凡亿课堂立场。文章及其配图仅供工程师学习之用,如有内容图片侵权或者其他问题,请联系本站作侵删。
相关阅读
进入分区查看更多精彩内容>
精彩评论

暂无评论