我目前正致力于Linux的C网络应用程序。它基于DPDK。我使用valgrind执行了应用程序,它没有显示任何内存泄漏。我也尝试过Intel Inspector 2016,结果相同。但是,当我让我的应用程序在系统(AWS EC2实例)上运行几天,同时监控RAM使用情况(Cloudwatch)时,它显示RAM不断增加,线性和缓慢(大约1 MB /天)。我怎么才能发现这个泄漏?
答案 0 :(得分:4)
调试此方法的一种方法是编写一些监视所有内存分配和所有取消分配的代码。有了这样的监控代码,您就可以找到"其中"分配的内存是。
由于您使用的是Linux,因此这可能是一个开始的地方:
http://www.gnu.org/savannah-checkouts/gnu/libc/manual/html_node/Hooks-for-Malloc.html
第一个测试可能是在程序关闭时检查所有已分配的内存是否空闲。这将告诉您是否有泄漏或已用旧内存的累积。