【发布时间】:2012-06-14 13:58:43
【问题描述】:
我们有一个在 Linux 上运行的大型多线程 C++ 应用程序。我们看到应用程序占用的内存增长很快,并且认为存在一些泄漏。我们已经尝试了我们拥有的所有工具(valgrind、DynLeak、Purify),但没有找到任何东西。由于此应用程序可以在 Windows 上运行,我们还尝试了 Bounds Checker。也没有用。
我们需要一个可以提供帮助的新工具。我看过 Google Perfomrance Tools,Paul Nettle 的 MMGR,MemCheck Deluxe。他们都没有给我留下深刻印象。
有什么好工具可以完成这项任务吗?
【问题讨论】:
-
如果上述工具都找不到泄漏点,是什么让您相信存在泄漏点?您的应用程序可能正在使用所有内存。或者,您的应用程序可能会保留内存,即使它没有使用它。对于最后一种情况,不会有泄漏,只是内存使用或清理效率低下。
-
也许this 可以提供帮助。但是,如果使用其他工具未检测到泄漏,您如何确定存在内存泄漏?
-
泄漏可能在第三方库中,或者您可能只是在应用程序甚至操作系统中看到资源池和其他缓存的结果......大量内存使用并不是一个迹象内存泄漏必然。看看它是否在相同负载下随着时间不断增长。
-
1.我们认为存在泄漏,因为我们看到此应用程序占用的内存一直在增长。
-
2.这是一个成熟的应用程序,几年来使用相同的 3rd par 工具。我相信,如果泄漏是由这些工具引起的,我们本可以更早地看到它们。这不是一个案例。这是新事物。
标签: c++ linux memory-leak-detector