0

有什么好的工具/技术可以发现代码的哪些区域正在使用大量内存?我已经看到类似的关于 linux 的问题提到了 valgrind,但没有一个针对使用 Visual Studio 2010 开发的 Windows 应用程序的问题。

4

3 回答 3

2

如果您使用分配分析器,还有AQTime可以为您提供已分配对象的列表和创建每个对象的位置的调用堆栈。

其他选项包括使用代码对象的实例计数器手动检测代码。不理想,但它可能很有用,特别是如果分析工具无法运行您的应用程序(例如,由于内存不足或仪器故障等)。

这些工具通常不会以非常明显的方式显示内存碎片 - 如果您有大量大对象和大量小对象以不同的顺序频繁分配和释放,则很容易发生这种情况。如果可能的话,对其中一些对象使用池是值得的,并且在某些情况下它会对内存使用和性能产生巨大影响。

于 2013-04-10T09:54:53.370 回答
1

VS2010 附带的 Microsoft CRT 对内置的泄漏检测具有强大的支持。在 crtdbg.h 标头中可用,在此MSDN 库文章中对其进行了很好的描述。

如果这太难了,那么 Windows 调试工具包可能会非常有用。UMHD (用户模式堆调试器)实用程序可以在不更改程序的情况下报告泄漏。

于 2013-04-10T10:19:54.963 回答
0

性能向导允许非常详细地查看资源利用率,并可以突出显示导致高内存负载的单行代码。要启动向导,请单击 Visual Studio 的分析菜单,然后单击启动性能向导。运行完整考试可能需要高级版本或更高版本。

于 2013-04-10T09:45:31.950 回答