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

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

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

比如说:应用资源定义了

x:Key="{x:StaticSystemParameters.HorizontalScrollBarHeightKey}">20,

这行语句所创建的资源可为任何控件所用,它会显示一个水平滚动条。如果创建了大量控件,

但这些控件实际上又没有显示出滚动条则会导致内存泄漏。 

比如说:应用资源定义了 20,这行语句所创建的资源可为任何控件所用,它会显示一个水平滚动条。如果创建了大量控件,但这些控件实际上又没有显示出滚动条则会导致内存泄漏。   

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

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

【编辑推荐】

  1. 微软Windows系统的七类安全漏洞
  2. 微软将发布10个安全公告修复34个安全漏洞

文章来源网络,作者:运维,如若转载,请注明出处:https://shuyeidc.com/wp/151217.html<

(0)
运维的头像运维
上一篇2025-03-13 10:51
下一篇 2025-03-13 10:53

相关推荐

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注