无法跟踪Linux中的内存泄漏

时间:2016-09-15 12:47:55

标签: c++ linux memory memory-leaks

我有一个基于实时应用程序RTMP的流媒体应用程序,如果运行,会泄漏内存。不幸的是,我无法通过valgrind运行它,因为它是一个实时应用程序

以下是问题 1.应用PID存储器即使在数小时后仍保持恒定为3.8% 2.通过slabtop的内核内存保持不变 3.在meminfo中,我看到可用内存不断减少!

我如何知道谁占用了这段记忆?我怀疑TCP缓冲区或类似的东西。有人可以帮忙吗?

2 个答案:

答案 0 :(得分:0)

我们不可能只用所提供的信息说出你在哪里泄漏。

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

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

答案 1 :(得分:0)

我发现了根本原因。将Linux中的tcp内存设置为32MB是导致问题的原因。将其重置为87KB,这是Centos 7.2中的默认值

不确定为何将其设置为高值会导致问题