如何识别c#中的内存泄漏?

如何识别c#中的内存泄漏?,c#,C#,可能重复: 大家好 识别c#中内存泄漏的最佳做法是什么?使用内存探查器-将其连接到可疑进程并运行可疑操作 您可以在问题的答案中找到一些推荐的探查器。如何 Visual Studio评测/性能工具允许您跟踪 不幸的是,这只适用于成本较高的VS层次结构版本。首先,安装最新版本的Microsoft调试工具。这是一个先决条件 要分析内存消耗,我建议您下载并使用.Net内存分析器。它确实简化了所有的过程 MemProfiler允许分析托管应用程序、windows服务、asp.net应用程序和内存转储

可能重复:

大家好
识别c#中内存泄漏的最佳做法是什么?

使用内存探查器-将其连接到可疑进程并运行可疑操作

您可以在问题的答案中找到一些推荐的探查器。

如何


Visual Studio评测/性能工具允许您跟踪


不幸的是,这只适用于成本较高的VS层次结构版本。

首先,安装最新版本的Microsoft调试工具。这是一个先决条件

要分析内存消耗,我建议您下载并使用.Net内存分析器。它确实简化了所有的过程

MemProfiler允许分析托管应用程序、windows服务、asp.net应用程序和内存转储中的托管内存利用率


要在DEV机器上查找进程泄漏,请运行MemProfiler并简单地连接到所需的进程。一旦您进行了评测,拍摄快照,MemProfiler将告诉您加载了哪些实例以及加载了多少实例,这样您就可以知道分配内存的是什么。在不同时刻至少拍摄2个内存快照,并将它们进行比较,以查看“增量实例”。(如果delta大于0,则创建了N个新实例。否则,delta在托管GC环境中如何存在内存泄漏?@David:通过使用非托管代码、不清理委托/事件处理程序、在工厂类型对象中存储对象引用等。这不一定像C++风格的内存泄漏那么可怕,但您肯定仍然没有与.NET.NET相关的问题: