我知道这是一个愚蠢的问题,但是当我运行包含线程的程序时,我发现任务管理器中的应用程序的内存(VM和内存使用)正在增加,因为我的线程在那一刻停止了,所以我想知道是否有任何方法可以知道这个的来源,或者只知道应用程序现在正在编译哪一行? 。 我使用了线程监视窗口,但我没有得到任何有用的信息。
答案 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中对性能指标的评论以及如何不使用任务管理器