我有一个使用 Visual Studio 2008 使用 C++ 编写的 Windows 应用程序。我想获取内存使用情况的统计信息,以查找内存使用情况的瓶颈和位置。理想情况下,我希望有一个工具可以执行此操作,而无需向代码本身添加计数器/分析逻辑。基本上我正在寻找的是:
- 所有分配的列表(释放与否并不重要,我想知道每次分配的内容)
- 每个分配的调用堆栈以及表示调用代码和分配内存的次数的计数器。
- 有关已释放和未释放内存的信息(以查找泄漏)。理想情况下,它应该足够智能,可以确定内存是否仍在使用或是否确实已泄漏(通过作用域或其他一些智能机制)。
我不在乎它是否是免费工具。以下是我已经看过的一些工具:
-
Rational PurifyPlus: 老实说,我还没有充分利用这个工具。它会返回很多误报。另外,它没有给我上面列表中的前两项,它似乎只关注内存错误和泄漏。
-
系统内部VMMap:这个工具很有趣,可以让我看到内存是如何分布的(堆栈、堆、共享堆等)。它还让我看到分配的调用树,但不是很直观或有帮助。从数据中很难理解。
-
开发合作伙伴边界检查器:我真的认为这是迄今为止最无用的工具。几年前,在他们被 DevPartner 收购之前,我就使用过它,我记得它的效果要好得多。但它并没有真正为我提供我需要的统计数据,也似乎无法正确检测内存泄漏。
我预先感谢任何帮助/建议。我的应用程序是一个服务器,在压力测试期间随着时间的推移会遇到严重的内存增长问题(最终由于虚拟字节超过 32 位应用程序的限制而崩溃)。拥有正确的工具将帮助我隔离我们分配内存的位置以及可能泄漏内存的位置。
在我的工作地点,我们使用软件验证 http://www.softwareverify.com/ 内存验证器 http://www.softwareverify.com/memory-leak-detection.php。它将为您提供各种内存统计信息、分配列表、每个分配的调用堆栈以及内存泄漏。事实证明,它在我的工作经验中偶尔有用。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)