2016-09-15 33 views
-1

我有一个实时应用程序基于RTMP的流应用程序,如果运行,会泄漏内存。不幸的是我无法通过Valgrind的运行它,因为它是一个活生生的应用无法跟踪Linux中的内存泄漏

这里有 甚至几个小时后1.应用PID内存保持不变,以3.8%的问题 2.内核内存通过slabtop保持不变 3.在meminfo,我看到可用内存不断减少!

我如何知道谁正在占用此内存?我怀疑TCP缓冲区或类似的东西。有人可以帮助吗?

+0

当我添加了顶部%MEM,它不匹配使用的内存 – user6835267

+1

你确定它不只是[linux磁盘缓存](http://www.linuxatemyram.com/)。 –

+0

查看memingo中的* all *值。随时间绘制它们,看看会发生什么 –

回答

0

我们不可能说只有提供的信息在哪里泄漏。

如果您不能使用Valgrind,我建议您尝试隔离程序的各种功能/模块。然后,尝试禁用/启用这些模块,以查看在禁用/启用它时是否存在泄漏。

例如,尝试禁用应用程序的网络模块,以查看它是否继续泄漏。这样你可以将问题缩小到一个/各种模块而不是整个应用程序。

0

我找到了rootcause。在Linux中将tcp内存设置为32MB会导致问题。它重置为87KB是CentOS中的默认值7.2

不知道为什么它设置为高价值应引起问题