大家好。我认为我在 MQTT Lua 模块中发现了内存泄漏。此泄漏的确切大小为 112 字节。当 ESP 尝试重新连接到 MQTT 代理时,它正在发生。每次连接尝试消耗 112 字节,这些字节永远不会被释放。为什么会这样?我在下面粘贴示例代码。谢谢你的帮助。
代码:
全选local m = nil
local mqttReconnect
timer = tmr.create()
local function handle_mqtt_error(client, reason)
client:close()
mqttReconnectTimer:start()
end
local function handle_mqtt_connect(client)
client:on("offline", handle_mqtt_error)
client:on("message", messageArrived)
client:lwt(config.MQTT['lw_topic'],config.MQTT['lw_message'],config.MQTT['qos'],0)
publishData(client,"data")
end
local function mqtt_connect(client)
print("connecting "..node.heap())
client:close()
client:connect(config.MQTT["ip"], config.MQTT["port"],config.MQTT["tls"], 0, handle_mqtt_connect, handle_mqtt_error)
end
function module.start()
m = mqtt.Client(config.ID, config.MQTT['keepalive'], config.MQTT['user'], config.MQTT['pwd'])
mqttReconnectTimer:register(1000, tmr.ALARM_SEMI, function() mqtt_connect(m) end)
mqttReconnectTimer:start()
end