为什么Garbage Collector没有收集用户控件?

时间:2009-05-15 14:22:33

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

我有一个带有内存泄漏的大型.NET C#应用程序。使用annt内存分析器,我可以看到内存中有多个版本的相同用户控件,垃圾收集器没有收集它们。 Web表单上有输出缓存,但实际用户控件上没有输出缓存。

是否存在未处理用户控件的原因?

我如何确定为什么以及什么阻止他们被垃圾收集器处理?

3 个答案:

答案 0 :(得分:1)

有很多原因导致用户控件没有被垃圾回收。看看代码本身,你是否实例化了实际上没有处理过IDisposable的对象(例如记录集)?

答案 1 :(得分:0)

如果您的网页上启用了输出缓存,则所有子控件也会缓存。至于你的控件的多个实例在内存中挥之不去,请使用部分页面缓存为这个页面读取一些策略,这将有助于节省内存。

http://msdn.microsoft.com/en-us/library/k4he1ds5(VS.71).aspx

答案 2 :(得分:0)

如果有人至少拥有一个对象,则基本上不会收集对象。查看并查找谁持有该参考。 ANTS Profiler或.NET Memory Profiler(SciTech)将提供良好的洞察力。