gpt4 book ai didi

简单 PUB/SUB 应用程序中的 Czmq 内存泄漏

转载 作者:行者123 更新时间:2023-11-30 14:48:07 27 4
gpt4 key购买 nike

我在将 czmq 库用于简单的 PUB/SUB 应用程序时遇到内存泄漏问题。所以,这是描述:

该设置包含多个发布者和多个订阅者。每个发布者和订阅者都是一个单独的线程。线程是 Linux 机器上的普通 POSIX 线程。我使用 zmsg_sendzframe 从发布者向订阅者发送消息。每条消息各包含一帧。我能够发送和接收消息,但随着时间的推移,我发现应用程序占用的内存不断增加。我正在使用 tcp pub-sub 套接字。

我想提的一件事是,发送消息后我不会销毁它,因为文档中提到它会在发送成功后销毁它们。在接收消息时,我将收到的消息复制到本地结构中,然后销毁框架和 zmsg。我正在使用 zpoller 在套接字上等待消息。它在arm处理器上运行。谁能指导我,我需要记住哪些事情才能避免内存泄漏?应用程序以 10 Hz 的速率发送消息。

了解我可能犯的一般错误将会有所帮助。谢谢。

最佳答案

您需要进一步挖掘才能找出内存泄漏的原因。

valgrind下运行您的应用程序,一旦您认为内存正在泄漏,请中断执行,valgrind应该报告所有可能的泄漏。希望真正的泄漏能够脱颖而出,因为它会很大而且很明显。

其他可以尝试的方法是将所有套接字的 HWM 减少到 1,看看这是否会产生影响。内存泄漏可能只是 ZeroMQ 使用缓冲区(由 HWM 设置)。如果内存被释放,Linux 并不总是将其返回到堆,除非其他地方需要它。

最后,感谢 ZeroMQ 的架构,您可以轻松地将应用程序分成两部分,然后您的 PUBSUB 将分开并进一步缩小泄漏范围。

关于简单 PUB/SUB 应用程序中的 Czmq 内存泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50689447/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com