在c#中检测导致内存泄漏的对象

本文关键字:内存 泄漏 对象 检测 | 更新日期: 2023-09-27 18:15:02

如何检测导致。net内存泄漏的对象。是否有可能检测使用崩溃转储导致内存泄漏的对象?

在c#中检测导致内存泄漏的对象

要检测和调查。net中的内存泄漏,您有几个选项:

  1. 使用内存分析器工具,如RedGate的ANTS(许多其他类似的工具可用)
  2. 使用WinDBG和它的SOS扩展。
  3. 使用基于弱引用的内存泄漏检测器来检测你的应用。

要在内存泄漏调查中使用崩溃转储,请参阅此stackoverflow问题和此MSDN链接。

可能有一个转储(如果正确地进行了转储,请参阅本文),当然可以有多个转储。

你能做的:

  • 如果你还没有安装,安装Windows SDK来获得Windows的调试工具
  • 如果你有一个x86的进程(注意:相关的是进程的体系结构,而不是运行进程的系统的体系结构)使用WinDBG (x86),否则使用x64版本
  • 进入文件-打开崩溃转储,找到转储文件并打开它
  • 假设你的进程是。net 4,在调试器中输入

    .loadby sos clr!dumpheap -stat

  • 这将输出托管类型的计数和类名。

  • 拥有多个转储将使您更容易,但肯定不会像能够使用内存分析器那么容易