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博客团队)
本文版权归作者和博客园共有,欢迎转载。但未经作者同意必须保留此段声明,且在文章页面显著位置给出原文连接,否则保留追究法律责任的权利。
出处: http://alamiye010.cnblogs.com/
本系列目录及源码下载: 点击进入( 欢迎加入WPF/Silverlight小组 WPF/Silverlight博客团队)
本文版权归作者和博客园共有,欢迎转载。但未经作者同意必须保留此段声明,且在文章页面显著位置给出原文连接,否则保留追究法律责任的权利。