WPF框架的内存泄漏BUG

    用户在使用GIX4某模块的过程中,内存只见加不见减。我们怀疑出现了内存泄漏,所以我花了相当一段时间来进行此问题的排查。

    我使用Red Gate公司的产品ANTS Memory Profiler 5进行应用程序的内存进行监视。并在过程中修改程序中出现的一些问题。但是最后留下一个不知道原因的引用,如图1:

图1 泄漏对象引用图

    由图中可以看出,Application.Resources永久地引用了临时控件SelectionDataGrid。原因出在DeferredAppResourceReference类的Inflated事件被ResourceReferenceExpression对象引用。经查找相关资料,确定为WPF框架的BUG。该BUG会使内存不断地泄漏。

    官方原文:

When a DeferredResourceReference reference is used by a ResourceReferenceExpression class, the internal Inflated event causes a strong reference to be held to the expression. This keeps the whole visual tree from being collected by the Garbage Collector after the references are removed from the tree if the DeferredResourceReference reference is never inflated.

    另外,该补丁并不提供下载……汗!

    BUG详见:FIX: You may lose system resources during the life of some Windows Presentation Foundation applications

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏GuZhenYin

Asp.net Core中SignalR Core预览版的一些新特性前瞻,附源码(消息订阅与发送二进制数据)

前言 一晃一个月又过去了,上个月有个比较大的项目要验收上线.所以忙的脚不沾地.现在终于可以忙里偷闲,写一篇关于SignalR Core的文章了. 先介绍一下Si...

39090
来自专栏有困难要上,没有困难创造困难也要上!

Pyinstaller ERROR: Assembly amd64_Microsoft.VC90.CRT_1fc8b3b9a1e18e3b_9.0.21022.8_none not found

49280
来自专栏along的开发之旅

win下xamarin和64位Android Studio共存

下了xamarin的installer.exe,打开后提示安装32位jdk1.7,(-。-;),没办法,32位就32位吧,装就装吧。。。。。。。。很长很长时间后...

9110
来自专栏walterlv - 吕毅的博客

如何最快速地将旧的 NuGet 包 (2.x, packages.config) 升级成新的 NuGet 包 (4.x, PackageReference)

发布于 2018-05-13 09:07 更新于 2018-06...

6710
来自专栏张善友的专栏

发布基于Orchard Core的友浩达科技官网

2018.9.25 日深圳市友浩达科技有限公司发布基于Orchard Core开发的官网 http://www.weyhd.com/。 本篇文章为你介绍如何基于...

65140
来自专栏张善友的专栏

Windows Server AppFabric正式发布

Windows Server AppFabric 是一组集成技术,可更轻松地生成、扩展和管理 IIS 上运行的 Web 应用程序和复合应用程序,它是一款主要面向...

21680
来自专栏草根专栏

Identity Server 4 - Hybrid Flow - MVC客户端身份验证

26940
来自专栏walterlv - 吕毅的博客

如何创建一个基于命令行工具的跨平台的 NuGet 工具包

发布于 2018-05-12 01:09 更新于 2018-09...

9820
来自专栏walterlv - 吕毅的博客

使用 Postman 调试 ASP.NET Core 开发的 API

发布于 2018-09-09 12:38 更新于 2018-09...

93630
来自专栏令仔很忙

手把手教你----使用Nuget管理自己的项目库

官网上的解释:NuGet is the package manager for the Microsoft development platform in...

18310

扫码关注云+社区

领取腾讯云代金券