Air720H开发板,使用nvm例程时,问题一:为什么config.lua体积过大会出现内存不足?问题二:我需要写一个64K的数据到flash,怎样优化逻辑?能否给出大概思路?问题三:官方给出的Air720H模块LUA可以使用RAM为800K,但是测试只有660K就报内存不足,这是为什么?

问题一:lua程序   我利用for循环,每次写入包含32个字节的字符串

attachments-2019-01-9sCw16c05c51114f57012.png

问题一:运行结果    写入到1360就内存不足。

attachments-2019-01-hA5m44dH5c51116acd8f7.png问题三:程序

attachments-2019-01-fAQphmax5c511a90446af.png

问题三:运行结果

attachments-2019-01-3OdwydGA5c511ac1f2e26.png资料给出的内存

attachments-2019-01-vtra9jG45c511b211f0c0.png

请先 登录 后评论

1 个回答

李炜镪

问题一:config.lua的实现内部有个table缓冲所有的数据,这样写因为key不同,这个table会越来越大,所以到一定程度内存不足是肯定的,nvm库的应用场景是小数据量的简单键值对参数

问题二:像64K这样数据量比较大的数据可以直接通过io库读写文件来管理

问题三:lua虚拟机给出的660K数据是正在使用的内存的数据,此外还有虚拟机的垃圾内存数据是不显示的,你可以在输出内存统计之前强制进行完全的内存回收(collectgarbage(“collect”))再看看还有内存管理是有内存碎片的,如果碎片过多没有足够大小的连续内存可以满足申请要求也是会内存不足的,如果对这块有兴趣你可以多看下网上关于lua内存管理的介绍,luat对这块功能是完整移植,内存管理用的是dlmalloc

请先 登录 后评论
  • 0 关注
  • 0 收藏,2513 浏览
  • 木白刀口 提出于 2019-01-30 11:34

相似问题