WPF/Silverlight深度解决方案:(八)誓将内存释放到底

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

1)  UIElement控件实例= null

2)  定时调用GC.Collect()

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

这三种方法都有一定的作用,但是实际使用中均往往难以达到预期效果。特别是在Silverlight应用中,目前的Flash/Flex制作的RPG网页游戏都有一个通病:内存不断增加导致运行二、三十分钟后浏览器即进入假死状态,Silverlight如果无法处理好内存的释放,命运或许终究一样。

那么我们是否还有其他更好的方法实现内存垃圾的释放?大家不妨做这么一个测试,以IE浏览器为例,当我们打开一个运行有Silverlight应用程序的页面后,记录下任务管理器中该IEXPLORE.EXE的内存使用量,然后运行一段时间,再记录此时的内存使用量,最后将该页面最小化再还原回来,大家将看到该IEXPLORE.EXE的内存使用量已被完全的释放干净,如同新开的网页一般。这老掉牙的东西已算不上什么技巧,但是却给了我们一条内存彻底释放的思路:既然Silverlight应用程序是镶嵌在网页中的,我们能否通过该方法去释放内存呢?答案是肯定的。

以我的Silverlight游戏引擎Demo为例,刚加载完时内存使用约56M

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值