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.

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

时间: 2024-09-13 18:26:25

WPF框架的内存泄漏BUG的相关文章

Android应用内存泄漏的定位、分析与解决策略

Hello,大家好,我是Clock.翻了一下简书,发现有一个多月没有更新博客,本来今天打算和妹纸去电影院看<你的名字>,然后再去到处浪的. 结果因为妹纸公司临时有事,她不得不回公司一趟... 然后我也只能宅家里了,既然妹纸不在家,刚好最近一直在为项目做内存泄漏的优化工作,那就来写一点个人总结好了. 什么是内存泄漏 对于不同的语言平台来说,进行标记回收内存的算法是不一样的,像 Android(Java)则采用 GC-Root 的标记回收算法.下面这张图就展示了 Android 内存的回收管理策略

Android中导致内存泄漏的竟然是它----Dialog

一. 内存泄漏的 Bug 猛增 最近在 App 进行 mokey 测试的时候检测到一些内存泄漏问题.在前天的测试中,楼主一瞬间收到了4个这样的 Bug 单,瞬间心理无比纠结,真有千万只羊驼向我奔来. 登录页面出现内存泄漏??!!楼主的代码是如此的完美而无懈可击,这么可能出现这么多泄漏的问题? 插播什么是 Activity 泄漏:Android 中 Activity 代表一个页面,拥有一段生命周期,生命周期结束后,Activity 对象应当在之后某个合适的时机被 VM 回收内存.出现了泄漏就意味着

PHP对象递归引用造成内存泄漏分析_php技巧

通常来说,如果PHP对象存在递归引用,就会出现内存泄漏.这个Bug在PHP里已经存在很久很久了,先让我们来重现这个Bug,示例代码如下: <?php class Foo { function __construct() { $this->bar = new Bar($this); } } class Bar { function __construct($foo) { $this->foo = $foo; } } for ($i = 0; $i < 100; $i++) { $ob

WMQMessageConsumer构造函数抛JMSException导致的WMQFFSTInfo内存泄漏

问题描述 公司基于IBMMQ开发了企业级综合服务管理平台(ESB),同时将用户.客户.机构等等基础信息管理功能分离出来提供基本的数据服务,而其他系统则通过综合服务管理平台进行服务访问.我方恰好设计.并开发了其中的用户信息管理系统.该系统需要管理企业范围内的所有用户信息.机构信息.系统信息.功能信息.权限信息,并提供各种用户认证服务.其中一个较为关键的功能是,我们需要将各业务系统相关的用户.机构以及功能权信息实时同步到各业务系统,并且保证同步功能的高效.稳定与可靠.数据信息实时同步功能,依托企业级

精华阅读第 13 期 |常见的八种导致 APP 内存泄漏的问题

本期是移动开发精英俱乐部的第13期文章,都是以技术为主,所以这里就不过多的进行赘述了,我们直接看干货内容吧!本文系ITOM管理平台OneAPM整理. 实际项目中的MVVM(积木)模式–序章 导读:开篇之前,先贴上以该设计模式为基础的iOSAPP的App Store地址:https://appsto.re/cn/neiscb.i 这个项目通过笔者所要讲的设计模式,三个人在同时需要忙于其他项目维护的情况下,从开工到上架,前前后后加起来用了一个月的时间.因此,在保证项目质量的前提下,敏捷开发以及如何保

关于ie的内存泄漏与&amp;#106avascript内存释放

     最近做一个公司的业务系统,公司要求能尽可能的与c/s近似,也就是如c/s一样,点击文本框可以弹出此项目的相关内容,进行选择输入.     我使用了弹出窗口,然后在子窗口双击选中项目,把选中的值返回给父窗体.     在系统做完了之后,在客户使用的过程,由于客户使用的是512m的内存配置,所以在打开了30--40个窗体之后,ie的虚拟内存占用量达到近200m,从而使系统变慢,javascript的运行也变慢了.       在google搜了一下之后,才知道可能是由于ie的内存泄漏引起的

关于ie的内存泄漏与javascript内存释放

javascript      最近做一个公司的业务系统,公司要求能尽可能的与c/s近似,也就是如c/s一样,点击文本框可以弹出此项目的相关内容,进行选择输入.     我使用了弹出窗口,然后在子窗口双击选中项目,把选中的值返回给父窗体.     在系统做完了之后,在客户使用的过程,由于客户使用的是512m的内存配置,所以在打开了30--40个窗体之后,ie的虚拟内存占用量达到近200m,从而使系统变慢,javascript的运行也变慢了.       在google搜了一下之后,才知道可能是由

oracle 9i 的内存泄漏问题

oracle|问题  近期在linux平台上写了一个程序需要通过oracle 9i的客户端调用PL/SQL, 在调试时发现有内存泄漏问题, 以为程序有bug, 检查了n遍也没有发现问题(呜呜,郁闷死了), 后来才找到资料说时oracle 9i的客户端有内存泄漏. 总结一下:1. 当程序为多进程模式时会出现内存泄漏,而且泄漏速度很快, 在单进程模式下(DEFAULT)就没有这个问题2. 只在UNIX和linux系统上出现, window系统上没有发现.3. 不管是pro*c和OCI都会有这个问题

C++内存泄漏检测拾遗

在MFC开发环境中,当运行退出了,Visual Studio会在输出窗口提示是否有内存泄漏.也可以借助MFC类CMemoryState动态地检测并输出内存泄漏信息. 在非MFC框架中,需要借助CRT函数实现这些功能. 1. 调用_CrtDumpMemoryLeaks()函数会在输出窗口中输出当前的内存泄漏.若在程序开始处加上:_CrtSetDbgFlag( _CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF ): 语句,CRT会在程序的每个出口处自动调用_C