在运行代码时,如何知道代码中内存的来源增加

时间:2011-06-01 06:44:46

标签: c# visual-studio visual-studio-2008

我知道这是一个愚蠢的问题,但是当我运行包含线程的程序时,我发现任务管理器中的应用程序的内存(VM和内存使用)正在增加,因为我的线程在那一刻停止了,所以我想知道是否有任何方法可以知道这个的来源,或者只知道应用程序现在正在编译哪一行? 。 我使用了线程监视窗口,但我没有得到任何有用的信息。

3 个答案:

答案 0 :(得分:2)

如果你确定你的程序使用了过多的内存,那么亲自动手memory profiler将是一个很好的第一种方法。

答案 1 :(得分:1)

您可以使用CLR Profiler应用程序获取内存消耗的快照。然后,您将能够确定问题的根源。

CLR Profiler是免费的,可在此处获取:http://www.microsoft.com/downloads/en/details.aspx?FamilyID=be2d842b-fdce-4600-8d32-a3cf74fda5e1

答案 2 :(得分:1)

值得注意的是,内存分析器不会直接映射到任务管理器中的内存(VM和使用的内存)或Working Set计数器。

  

程序的工作集是一个   在其中收集这些页面   已经存在的虚拟地址空间   最近引用。它包括两者   共享和私人数据。共享   数据包括包含所有内容的页面   说明你的申请   执行,包括DLL中的那些   和系统DLL。作为工作   设置大小增加,内存需求   增加。

如果内存服务于Memory Profiler,则会查看专用字节,它们代表您正在使用的实际内存。

另请参阅Tess Ferrandez的this article对性能指标的评论以及如何不使用任务管理器