Paho MQTTv5客户端QoS=2模式下堆内存占用过高问题咨询
QoS=2订阅时Paho MQTTv5客户端内存持续增长问题
环境与核心现象
- 使用Eclipse Paho MQTTv5客户端对接Mosquitto Broker
- 采用**QoS=2(ExactlyOnce)**订阅时,
MqttProperties等Paho框架类占用的堆内存持续上升,即使停止发布端应用、触发强制GC,这些对象也无法被回收 - 堆内存会在数分钟内攀升至最大堆内存的80-90%;切换为**QoS=1(AtLeastOnce)**模式时,堆内存占用基本保持稳定
补充测试细节
为两个应用设置1G最大堆内存后,观察到以下结果:
- 两个应用最终均在内存占用约210M时达到峰值
- 应用1:每100ms接收1条约20字节的消息
- 应用2:每约150ms批量接收7条约20字节的消息,因负载更高,更快达到峰值
- 停止发布后内存仍未释放,疑问:QoS=2是否存在待确认消息缓冲区,填满后会被复用?
内容的提问来源于stack exchange,提问作者BF_PI
相关产品推荐
相关产品推荐

