如何解决ESP8266 NodeMCU Lua 如何清除堆?
如何清除堆或所有内存? 我需要在脚本错误的情况下恢复状态。 在致命错误脚本停止时,我想在重置和脚本再次触发之前清理混乱。 8266作为主处理器的串口监视器和安全执行恢复命令所需的内存。
解决方法
当您需要释放已用内存时,请使用命令 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 Copyright (C) 1994-2021 Lua.org,PUC-Rio
> gc_example=setmetatable({},{__gc=function(tab) print(tab,'Collected at: ',collectgarbage('count')*1024) end,__name='gc_example'})
> gc_example=empty
> collectgarbage('collect')
gc_example: 0x56626fb0 Collected at: 16918.0 -- resurrect because of __gc metamethod
0
> print(collectgarbage('collect'),collectgarbage('count')*1024) -- freeing
0 16582.0
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。