分析.NET 应用程序以查看哪些对象在某个时候仍未标记为垃圾回收的任意方法



有没有办法在 A 行和 B 行上设置某种点,运行一个进程,并查看哪些内存被分配而没有被释放(或没有被标记为垃圾回收(? 我使用的是 C#、VS 2015 专业版,并且探查器似乎只是报告在运行时分配了哪些对象,但我看不到哪些对象仍在保存。

我在任务管理器中看到并非所有内存都像我预期的那样被释放,并且想要一个可以告诉我哪些对象正在保存内存的分析器。 即使我无法设置 A 点和 B 点,有没有办法让我至少看到在进程终止时哪些对象没有被释放(或标记为垃圾回收(?

我愿意使用VS 2015的分析功能,或免费/付费的分析器。

快照中的所有对象(由内存探查器获取(都保存在内存中,此时无法收集。在执行的某个点获取快照怎么样,您可以使用 JetBrains dotMemory 及其分析 API(可能是其他分析器也有类似的功能,我只是不知道(。然后,您可以查看在快照 1 和 2 之间分配和未收集的对象。

我认为您正在寻找CLR探查器或类似的内存分析工具(与专注于时间的常见探查器不同(

这些链接是旧的,随着CodePlex即将关闭,可能会被迁移,但它是一个很好的工具。

https://msdn.microsoft.com/en-us/library/ff650691.aspx

https://clrprofiler.codeplex.com/

https://dzone.com/articles/pinpointing-memory-leaks-clr

最新更新