为什么用户控件不被垃圾回收器收集?

3

我有一个大型的.NET C#应用程序,存在内存泄漏问题。使用ants memory profiler工具,我可以看到同一用户控件的多个版本在内存中,并且垃圾回收器没有将它们清除。Web表单上有输出缓存,但实际用户控件上没有输出缓存。

为什么用户控件没有被处理?

如何确定是什么原因和什么阻止了垃圾回收器对其进行处理?

3个回答

1

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


0
如果您在页面上启用了输出缓存,则所有子控件也将被缓存。至于控件的多个实例在内存中挂起的问题,请阅读本页,其中提供了一些使用部分页面缓存的策略,这将有助于节省内存。

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


0

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接