我有一个 C++ 应用程序,当我观察任务管理器时,它表明应用程序的内存使用量逐渐增加。
我手动检查了我的源代码,并使用Visual Leak Detector for Visual C++来查找内存泄漏,但我找不到任何内容。是100%存在内存泄漏,我找不到它还是任务管理器误导我的可能性?
我有一个 C++ 应用程序,当我观察任务管理器时,它表明应用程序的内存使用量逐渐增加。
我手动检查了我的源代码,并使用Visual Leak Detector for Visual C++来查找内存泄漏,但我找不到任何内容。是100%存在内存泄漏,我找不到它还是任务管理器误导我的可能性?
它不是。它有多个内存统计选项(使用 View + Columns)并且版本很重要,但默认视图显示工作集。您的程序使用多少虚拟内存实际上是在 RAM 中。这是一个可以很快改变的统计数字。例如,只需最小化应用程序的主窗口。
它可以显示的 VM 大小也不是很好。该数字包括空闲堆块。获取实际使用的内存非常棘手,请阅读 SDK 文章中有关 HeapWalk 的小字。
它对泄漏检测毫无用处,除非你泄漏了它。
我使用Process Explorer作为任务管理器的替代品。它显示了 CPU/mem 使用的历史图表
我使用扩展任务管理器 http://www.warecase.com/products.asp
这对于调试目的很有用,尤其是检查线程是否存在以及其他此类情况。如果您的进程或应用程序有 pdb,它可以提供大量信息。
可能您可以使用 DevPartner 来识别内存泄漏。这是非常有用的。