ESP8266 NodeMCU Lua 如何清除堆?
Posted
技术标签:
【中文标题】ESP8266 NodeMCU Lua 如何清除堆?【英文标题】:ESP8266 NodeMCU Lua How to clear the heap? 【发布时间】:2021-09-20 12:51:53 【问题描述】:如何清除堆或所有内存? 我需要恢复状态以防脚本错误。 在致命错误脚本停止时,我想在重置之前清理混乱并再次触发脚本。 8266 用作安全执行恢复命令所需的主处理器和内存的串行端口监视器。
【问题讨论】:
是否要将所有全局变量重置为初始状态? 【参考方案1】:当您需要释放已用内存时,请使用命令collectgarbage('collect')
。
独立 Lua 中收集垃圾的标准触发器是自动收集 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
【讨论】:
以上是关于ESP8266 NodeMCU Lua 如何清除堆?的主要内容,如果未能解决你的问题,请参考以下文章
NodeMCU lua:adc.readvdd33() 在 ESP8266 上总是返回 65535
有没有办法在 Nodemcu ESP8266 上的 LUA 中提高 SD 卡写入速度?
[ESP8266系列] NodeMCU之在OLED上显示温湿度(lua编程)
物联网 Nodemcu esp8266 LUA 脚本的 DAST 安全扫描 www HTML 服务器连接到摄像头和空调继电器