凡亿教育-婷婷
凡事用心,一起进步
打开APP
公司名片
凡亿专栏 | Java堆内存被砍,MATLAB大数据处理不用硬扩容
Java堆内存被砍,MATLAB大数据处理不用硬扩容


MATLAB默认把Java堆内存上限从32000MB降到8000MB后,处理大型数据集时频繁报内存溢出错误,很多用户以为只能靠改配置强行扩容。其实不用盲目调大堆内存,调整数据处理逻辑就能适配限制。

9.png

1. 启用分块读取模式

处理大型CSV、二进制文件时,不要用load指令一次性全量读入内存。

改用datastore分块读取函数,每次只加载当前计算需要的小块数据,单块内存占用控制在几百MB以内,完全不会触发堆内存上限。

2. 转用原生数值数组

避免用Java类型的cell、table存储全量数据,这类对象会占用大量Java堆内存。

把数据转换成MATLAB原生的数值数组,数据直接分配在系统物理内存,不会占用有限的Java堆空间。

3. 关闭图形缓存

大数据绘图前,提前关闭Figure的后台像素缓存功能。

绘图时生成的临时图形数据不会存入Java堆,直接写入显存,大幅降低Java堆的占用峰值。

4. 按需临时扩容

如果必须用到Java堆的特殊功能,只在单次任务前临时把上限调到16000MB。

任务完成后立刻改回8000MB的默认值,既满足临时大数据处理需求,又避免长期大堆内存带来的软件卡顿问题。


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

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

暂无评论