ESP8266 NodeMCU Lua 如何清空堆内存?

如何清空堆或所有内存? 我需要在脚本故障时恢复状态。在致命错误的情况下,脚本将停止,并且我想在重置和脚本再次启动之前清理混乱。 8266作为主处理器的串行端口监视器,并且需要内存以安全执行恢复命令。

点赞
用户11740758
用户11740758

当你需要释放已使用的内存时,可以使用命令collectgarbage('collect')

在独立的Lua中, collectgarbage 的标准触发器是在200kb自动收集。

您可以将限制更改为较低的值。

参见:https://www.lua.org/manual/5.4/manual.html#2.5

...和:https://www.lua.org/manual/5.4/manual.html#pdf-collectgarbage

Lua独立示例...

$ lua -i
Lua 5.4.3  版权所有(C) 1994-2021 Lua.org、PUC-Rio
> gc_example=setmetatable({},{__gc=function(tab) print(tab,'收集',collectgarbage('count')*1024) end,__name='gc_example'})
> gc_example=empty
> collectgarbage('collect')
gc_example: 0x56626fb0  收集 16918.0 -- 恢复,在__gc元方法中
0
> print(collectgarbage('collect'), collectgarbage('count')*1024) -- 释放
0   16582.0
2021-07-10 16:44:29