乐鑫技术交流
直播中

无人岛

9年用户 824经验值
擅长:嵌入式技术 制造/封装 控制/MCU
私信 关注
[问答]

MQTT重连内存泄漏的原因?

大家好。我认为我在 MQTT Lua 模块中发现了内存泄漏。此泄漏的确切大小为 112 字节。当 ESP 尝试重新连接到 MQTT 代理时,它正在发生。每次连接尝试消耗 112 字节,这些字节永远不会被释放。为什么会这样?我在下面粘贴示例代码。谢谢你的帮助。
代码:全选local m = nil
local mqttReconnecttimer = 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

更多回帖

发帖
×
20
完善资料,
赚取积分