Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/161.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 无法跟踪Linux中的内存泄漏_C++_Linux_Memory_Memory Leaks - Fatal编程技术网

C++ 无法跟踪Linux中的内存泄漏

C++ 无法跟踪Linux中的内存泄漏,c++,linux,memory,memory-leaks,C++,Linux,Memory,Memory Leaks,我有一个基于实时应用程序RTMP的流媒体应用程序,如果运行,会泄漏内存。不幸的是,我无法通过valgrind运行它,因为它是一个实时应用程序 以下是问题 1.应用程序PID内存即使在数小时后仍保持恒定在3.8% 2.通过slabtop的内核内存保持不变 3.在meminfo中,我看到可用内存不断减少 我怎么知道是谁在回忆这些?我怀疑是TCP缓冲区之类的。有人能帮忙吗?仅凭所提供的信息,我们无法说出你在哪里泄漏信息 如果您不能使用Valgrind,我建议您尝试隔离程序的各种功能/模块。然后,尝试禁

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

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


我怎么知道是谁在回忆这些?我怀疑是TCP缓冲区之类的。有人能帮忙吗?

仅凭所提供的信息,我们无法说出你在哪里泄漏信息

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


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

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


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

当我将top的%MEM相加时,它与使用过的内存不匹配。您确定它不仅仅是。查看memingo中的所有值。随着时间的推移绘制它们,看看会发生什么