2013-04-09 89 views
0

什么是用于发现好的工具/技术代码的哪些方面使用了大量的内存?我已经看到了Linux的提及的valgrind类似的问题,但不是一个Windows应用程序使用Visual Studio 2010开发调试内存占用率过高

+0

您可能已经考虑过这一点,但Windows应用程序通常可以使用Wine在valgrind中运行。 – 2013-04-09 20:35:06

回答

0

性能向导允许资源利用的非常详细视图,可以突出单行代码而导致高内存负载。 要启动向导,请单击Visual Studio的“分析”菜单,然后单击“启动性能向导”。 运行全面检查可能需要高级版本或更高版本。

+0

嗯,是2012年的一个特点?我在2010年没有“分析”菜单。 – pauld 2013-04-10 13:52:46

+0

不,2010年也可以使用。但是,您可能有Express或Professional版本的Visual Studio。 – 2013-04-10 13:58:03

+0

是的,我有专业。我想我需要终极的分析选项。 – pauld 2013-04-10 14:10:30

2

还有AQTime,可以给你分配的对象的列表,并在那里,如果你使用分配探查每一个对象被创建的调用堆栈。

其他选项包括手动插装与实例计数器代码为对象,以你的代码。这并不理想,但如果分析工具无法运行应用程序(例如,由于内存不足或仪器故障等原因),它尤其有用。

什么这些工具往往通常不会表现出很明显的方法是内存碎片 - 如果你有很多的大型物体和大量的小物件被分配在不同的顺序频繁释放它可以很容易出现。如果可能的话,对这些对象中的某些对象使用池可能是值得的,它可能会对内存使用以及某些情况下的性能产生严重影响。

1

VS2010附带的Microsoft CRT强大支持内置的泄漏检测功能。可在crtdbg.h头文件中找到,在此MSDN library article中进行了详细说明。

如果这是太困难,则Windows调试工具包是非常有用的。 UMHD (User Mode Heap Debugger) utility可以在不更改程序的情况下报告泄漏。

+0

谢谢我会尝试,看看是否内存泄漏是一个重大问题,但除此之外,我没有试图调试内存泄漏,以至于找出哪些代码区域使用最多的内存。 – pauld 2013-04-10 13:51:23