繁体   English   中英

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

[英]detecting object causing memory leak in C#

如何检测导致.net中内存泄漏的对象。 是否可以使用故障转储检测导致内存泄漏的对象?

要检测和调查.NET中的内存泄漏,可以使用以下几种方法:

  1. 使用RedGate的ANTS之类的内存分析器工具(可以使用许多其他类似的工具)。
  2. 将WinDBG及其SOS扩展名使用。
  3. 借助基于弱引用的内存泄漏检测器自己为您的应用程序进行检测。

要在调查内存泄漏时使用故障转储,请参阅 stackoverflow问题和 MSDN链接。

可能只有一个转储(如果已正确处理,请参阅本文 ),当然可以有多个转储。

你可以做什么:

  • 如果尚未安装Windows SDK,请获取Windows调试工具
  • 如果您有x86进程(请注意:该进程的体系结构是相关的,而不是运行该进程的系统的体系结构),请使用WinDBG(x86),否则请使用x64版本。
  • 转到文件-打开故障转储,找到您的转储文件并打开它
  • 假设您的进程是.net 4,在调试器中输入

    .loadby sos clr后跟!dumpheap -stat

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

  • 拥有多个转储将使您更轻松,但肯定不如使用内存分析器容易

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM