メモリリークやパフォーマンスに関する事をメモっとく。

WPFでは、とかくパフォーマンスを気にする必要がある。当然、メモリリークもだ。WPFだから大丈夫なんてのは、通用しない。WPFだからこそ起こりうる事と思いながら作っている。Windows.Formsとは違い、コントロールがIDisposaleを実装していないから終了処理をしなくて良いわけじゃないし。
深刻なメモリリークに悩まされるWPF(2009年10月20日)
A hotfix is available that resolves some memory leak issues for WPF in the .NET Framework 4
Avoiding a WPF memory leak with DataBinding (Black Magic)(2008年5月7日)
視覚的なエフェクトに対する汎用性は、Windows.Formsの比ではないし。
パフォーマンスを調査する上で使えそうな(使った)ツールや参照した記事をメモしておく。

チューニングしよう的な記事
第3回 WPFアプリケーション・チューニング
Finding Memory Leaks in WPF-based applications
Software Rendering Usage in WPF
Choosing the Right Garbage Collector Settings for Your Application (.NET Memory Management: Part 4)

DynamicResourceってやばくね?という記事
WPF DynamicResource memory leak
WPF4では改善されているらしい。ほっ。
WPF3.5では、パッチが必要だそうだ。

WPFのTree構造を見るなら、このソフト
WPF Inspector
Snoop
WPFアプリを検知して、VisualTreeやLogicalTreeを視覚的に表示してくれる。
WPF Inspectorの方は、各コントロールのプロパティやDataContextをプロパティグリッド的な感じで見せてくれる優れもの。Snoopは、できたりできなかったり…。
Process Explorer
各プロセス内のメモリ状況を見せてくれたりする。それ以外の情報もある。
Download and Install Debugging Tools for Windows
WinDbgは、Windows SDKが必要かな。
[Windbg 第1回] Windbgを知っていますか?

メモリリークを調べるなら、WinDbgがかなり強力。でも、使い方を覚えるのが大変かな。
WinDbgを使った記事
Memory Leak Detection in .NET
Where's your leak at? [Using WinDbg, SOS, and GCRoot to diagnose a .NET memory leak]
※解放していてほしいインスタンスが解放されていないのはわかるけど、なぜ解放されていないのか、は自分で考え、調査する必要がある。

最後、このWinDbgをかなり強力にしたようなツール・ソフトがある。
.NET memory Profiler
各クラスのインスタンス数、バイト数。ある時点からの増減やリアルタイムなグラフ…。かなり強力なツールといえる。あと、リークに関するアドバイス的な事も提示してくれる。10日間試用できる(実行しなかった日はカウントされない)。ただ、日本で代理販売してるところがないってのが難点…。試用してみるだけでも、価値があるかな。10日間の勝負になるけど。
スポンサーサイト
当サイトは基本をすっ飛ばしてます。基本文法等は、@ITをどうぞ
カテゴリー: WPF4 | コメント: 0 | トラックバック: 0


この記事へのコメント

コメントの投稿

非公開コメント


サイドバー背後固定表示サンプル

当ブログに書かれたソースコードは流用自由です。

バグ、スペルミス等はありうる事です。

ご利用の際は自己責任でお願いしますm(_ _)m