有什么方法可以告诉c#对象没有被垃圾收集?

时间:2012-09-30 16:26:45

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

  

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

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

有办法做到这一点吗?

3 个答案:

答案 0 :(得分:0)

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

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

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

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

它们不是特定于您的问题,但它可以帮助您。

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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