程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> 關於.NET >> WPF框架的內存洩漏BUG

WPF框架的內存洩漏BUG

編輯:關於.NET

用戶在使用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.

另外,該補丁並不提供下載……汗!

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved