BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース WPFのメモリーリークに対する3つのホットフィックス

WPFのメモリーリークに対する3つのホットフィックス

ブックマーク

原文(投稿日:2010/06/17)へのリンク

Windows Presentation Foundationは、簡単にメモリーリークが起きるので、早速有名になっている。例えば、そのデータ バインディング技術のためにweak reference(弱い参照)に依存している。並行マルチ-スレッディングのように、弱い参照は、簡単のように見えるが、実際は、正しく使うのは驚くほど難しい。実際のオブジェクトがタイムリな方法で開放された時でさえ、WPFの弱い参照の配列は、ブラブラ状態で、ストレスがあるとメモリーリークになる。

非常にたくさんの短命の要素を使っている時に、このことが特に明らかになる。 KB981107 は、この問題を3つの領域で処理している。第一に、もしリソースを参照しているコントロールが、実際にそれを使わないと、WPFは、スタイルやテンプレート用のアプリケーション-レベルのリソースをリークする可能性がある。 Jossef Goldberg氏が詳しく説明している,

例:  アプリケーション リソースが   <sys:Double x:Key="{x:Static SystemParameters.HorizontalScrollBarHeightKey}">20</sys:Double>     と定義する。これが水平方向のスクロールバーを表示できる、どんなコントロールによっても使われるリソースを作成する。実際は、スクロールバーを表示しないコントロールをたくさん生成するとリークになるだろう。

このホットフィックスで、改善される他の状況として、たくさんの短命な要素が、長命なオブジェクトへの依存関係プロパティに、データバインドされたプロパティを持っている時である。長命なオブジェクトから短命なオブジェクトへの弱い参照は、短命なオブジェクトが破壊された後、長い間存在し続ける。

不幸にも、 KB981107ホットフィックスは、.NET 4.0用には、未だ無い。 Microsoftは、リリースするかどうかも未だ決定していない。他の2つのホットフィックス、KB967634KB967328 は、.NET 4.0の一部として出荷された。なので.NET 4.0を使っている人は、それらについて心配する必要はない。

この記事に星をつける

おすすめ度
スタイル

BT