WPF/Silverlight应用程序长时间运行后会产生非常多的内存垃圾(内存泄露例外),特别是在经常需要进行Remove操作的粒子、动画、游戏等方面的应用,国外高手们提出的方案我归纳了一下主要有:

1)  UIElement控件实例= null

2)  定时调用GC.Collect()

3)  让控件继承Idisposable接口,并实现相应逻辑

最后需要注意以下几点:
     1、有add,就要有remove
     2、有+=,就要有-=
     3、有start就要有stop
     4、注意使用最新版本的SDK、Tools、ToolKits、插件等,它们会不断修复内存泄露bug

5、比如在LayoutRoot.Children.Remove(UIElement)后,再执行UIElement= null,对于释放UIElement对象非常有效,屡试不爽(当前前提是这个UIElement内部所有对象都已释放依赖)。

作者:深蓝色右手
出处:http://alamiye010.cnblogs.com/
本系列目录及源码下载:点击进入(欢迎加入WPF/Silverlight小组 WPF/Silverlight博客团队)
本文版权归作者和博客园共有,欢迎转载。但未经作者同意必须保留此段声明,且在文章页面显著位置给出原文连接,否则保留追究法律责任的权利。
posted on 2009-10-01 01:05  深蓝色右手  阅读(8498)  评论(22编辑  收藏  举报