【问题标题】:Is there any way to tell what c# objects have not been garbage collected? [duplicate]有没有办法告诉哪些 c# 对象没有被垃圾收集? [复制]
【发布时间】:2012-09-21 16:31:31
【问题描述】:

可能重复:
What strategies and tools are useful for finding memory leaks in .NET?

我有一个程序在运行一段时间后出现“内存不足”异常。这是一个相当复杂的程序,涉及很多异步的东西。与其从代码开始来诊断问题,我认为如果我能分辨出哪些对象在没有被垃圾收集的内存中弄乱了,这可能会给我一个先机。

有没有办法做到这一点?

【问题讨论】:

标签: c# .net memory-leaks garbage-collection profiling


【解决方案1】:

如果您使用线程来异步您对线程的代码控制,例如同时运行特定线程,例如在完成此运行后仅同时运行 10 个线程,则运行下一个 10 个线程,并且如果您正在创建任何非托管对象,则显式处理它

【讨论】:

    【解决方案2】:

    我肯定会使用分析器,我用于内存分析的最好的之一是 SciTech 的内存分析器Scitech .NET Memory Profiler

    【讨论】:

      【解决方案3】:

      即使您可以使用分析器来检查对象,但有时当您包含大量异步内容时,您无法相应地更改您的逻辑。

      通常我们使用事件处理程序模式在不知不觉中造成内存泄漏。

      我有一些关于此的帖子: http://www.codeproject.com/Articles/123448/GC-Algorithm-and-Story-of-WeakReference

      http://www.abhisheksur.com/2012/02/optimizing-inpc-objects-against-memory.html

      它们并非针对您的问题,但可以帮助您。

      【讨论】:

      • 由于使用(内存)分析器而需要更改逻辑?你能详细说明一下吗?
      猜你喜欢
      • 2011-10-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-18
      • 1970-01-01
      相关资源
      最近更新 更多