我有一个大型的.NET C#应用程序,存在内存泄漏问题。使用ants memory profiler工具,我可以看到同一用户控件的多个版本在内存中,并且垃圾回收器没有将它们清除。Web表单上有输出缓存,但实际用户控件上没有输出缓存。
为什么用户控件没有被处理?
如何确定是什么原因和什么阻止了垃圾回收器对其进行处理?
我有一个大型的.NET C#应用程序,存在内存泄漏问题。使用ants memory profiler工具,我可以看到同一用户控件的多个版本在内存中,并且垃圾回收器没有将它们清除。Web表单上有输出缓存,但实际用户控件上没有输出缓存。
为什么用户控件没有被处理?
如何确定是什么原因和什么阻止了垃圾回收器对其进行处理?
有很多原因导致用户控件没有被垃圾回收。看看代码本身,你是否实例化了实现IDisposable接口的对象(如记录集),但实际上没有进行处理?
http://msdn.microsoft.com/en-us/library/k4he1ds5(VS.71).aspx
基本上,如果有人持有至少一个对对象的引用,该对象将不会被收集。查找并确定谁持有该引用。ANTS Profiler或.NET Memory Profiler(SciTech)将提供良好的洞察力。