调试高内存使用率

时间:2013-04-09 20:31:43

标签: c++ visual-studio-2010 visual-studio

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

3 个答案:

答案 0 :(得分:2)

如果您使用分配探查器,还有AQTime可以为您提供已分配对象的列表以及每个对象的调用堆栈。

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

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

答案 1 :(得分:1)

VS2010附带的Microsoft CRT强烈支持内置的泄漏检测。在crtdbg.h标头中可用,在MSDN library article中对此进行了详细描述。

如果这太困难了,那么Debugging Tools for Windows软件包可能非常有用。 UMHD (User Mode Heap Debugger) utility可以在不更改您的计划的情况下报告泄漏。

答案 2 :(得分:0)

性能向导允许非常详细地查看资源利用率,并且可以突出显示导致高内存负载的单行代码。 要启动向导,请单击Visual Studio的Analyze菜单,然后单击Launch Performance Wizard。 可能需要高级版本或更高版本才能进行全面检查。