BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

微软发布3个WPF内存泄漏补丁

| 作者 Jonathan Allen 关注 530 他的粉丝 ,译者 张龙 关注 12 他的粉丝 发布于 2010年6月19日. 估计阅读时间: 1 分钟 | Google、Facebook、Pinterest、阿里、腾讯 等顶尖技术团队的上百个可供参考的架构实例!

Windows Presentation Foundation的内存泄漏问题可谓是家喻户晓。比如说,WPF严重倚赖于弱引用来实现数据绑定技术。就像并发多线程一样,弱引用看似简单,但其实却很难用好。哪怕及时释放掉了实际的对象,但WPF的弱引用数组还是会继续持有引用,这就导致了内存泄漏。

在使用大量短暂生命周期的元素时这一点尤为明显。KB981107从3个地方来解决该问题。首先,如果引用了资源的控件从未使用过该资源的话,那么WPF就会导致应用级的样式与模板内存泄漏问题。Jossef Goldberg解释到

比如说:应用资源定义了<sys:Double x:Key="{x:Static SystemParameters.HorizontalScrollBarHeightKey}">20</sys:Double>,这行语句所创建的资源可为任何控件所用,它会显示一个水平滚动条。如果创建了大量控件,但这些控件实际上又没有显示出滚动条则会导致内存泄漏。

该补丁还会解决大量短暂生命周期元素的属性绑定到了长期存活的对象上的情况。在短周期对象销毁后,长周期对象对短周期对象的弱引用依然会长久保留下来。

遗憾的是,KB981107补丁还无法用于.NET 4.0,微软甚至还没有决定是否发布一个。另外两个补丁KB967634KB967328则作为.NET 4.0的一部分发布,因此.NET 4.0的用户就无需下载这两个补丁了。

查看英文原文:Three Hotfixes for WPF Memory Leaks

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT