首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >简单发布/订阅应用程序中的捷克内存泄漏

简单发布/订阅应用程序中的捷克内存泄漏
EN

Stack Overflow用户
提问于 2018-06-05 06:08:19
回答 1查看 335关注 0票数 0

当我在一个简单的PUB / SUB应用程序中使用czmq库时,我面临着一个内存泄漏问题。所以,下面是描述:

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

我想提到的一件事是,在发送消息后,我并没有像文档中提到的那样销毁它,它在成功发送后对它们进行了will.destroy。在接收消息时,我将接收到的消息复制到本地结构中,然后销毁帧和zmsg。我使用zpoller在套接字上等待消息。它是在arm处理器上运行的。有没有人可以指导我,为了避免内存泄漏,我需要记住哪些事情?应用程序以10 Hz的速率发送消息。

关于我可能犯的一般性错误的线索将是有帮助的。谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-07 17:23:51

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

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

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

最后,由于ZeroMQ的架构,你可以很容易地将你的应用程序一分为二,然后你的PUBSUB将被分开,并进一步缩小泄漏范围。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50689447

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档