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

1. 隐式全变量复制
部分指令执行时会隐式复制整个工作区的大型数组。
哪怕只是对数组做简单的维度转置,MATLAB也会在后台生成一份完整的副本,瞬间占用数G额外内存。
2. 自动日志缓存堆积
新版本默认开启的命令行历史全量缓存,会把所有操作生成的临时数据存入内存。
长时间运行后,历史缓存会逐步累积大量冗余数据,单次指令触发缓存刷新时,就会出现内存突增的情况。
3. 并行池自动启动
部分指令会自动唤醒后台并行计算池,启动多个worker进程。
每个worker进程都会独立分配数百兆内存,瞬间累加起来就会达到几G的内存占用。
4. 快速优化方案
给大型数组操作添加in-place修饰符,避免隐式生成数据副本。
关闭自动启动并行池的选项,定期清理命令行历史缓存,就能避免单次指令触发异常大内存分配。
本文凡亿教育原创文章,转载请注明来源!
暂无评论