[Silverlight]メモリリークの原因を調べる

 サーバからのデータ取得を行うたびに、IEのメモリ使用量が増えて行くという現象が発生してしまっていたので、SilverlightのメモリリークについてGoogle先生と一緒にいろいろ調べてみました。
 以下はその時に試してみた方法のメモですが、内容については無保証ですので(このブログのエントリー全てそうですがw)、試される方は自己責任でお願い致します。

Silverlight application memory leaks detector

リークが発生しているかを確認したいクラスのコンストラクタで

MemoryProfiler.AddReference(this);
を呼び出せば、MemoryProfiler.checkを呼び出すことによって、使用メモリと、メモリ上に残っているAddRefferenceしたオブジェクトのインスタンス数を確認することができます。

Silverlight Spy

 Silverlightアプリケーションのメモリ使用量を含む、さまざまなデータを参照することができます。99ユーロ(個人使用なら69ユーロ)はちょっと高いけど、会社で買ってくれるっていうなら有ってもいいかも。

Finding Memory Leaks In Silverlight With WinDbg

 Microsoftが提供しているデバッグツール"WinDbg"(32bit版/64bit版)を使用した、Silverlightのメモリリーク検出方法。
 手順を簡単にメモ。

  1. IE上でSilverlightアプリケーションを起動
  2. WinDbgを起動する(スタート→プログラム→Debugging Tools for Windows)
  3. WinDbgのメニューから[File]→[Attach to a Process]を選択し、プロセス一覧から"iexplore.exe"を選択してOKをクリック
  4. 画面下部のコマンド入力欄に以下のコマンドを入力してsos.dllをロード
    .load C:\\Program Files\\Microsoft Silverlight\\3.0.40818.0\\sos.dll
    (※ パスは環境によって変わります/※2 先頭の"."を忘れずに)
  5. 以下のコマンドで、Silverlightアプリケーション内のインスタンス名、数、使用メモリが一覧表示されます。("SilverlightApplicationName"の部分は適宜編集してください)
    !dumpheap -stat -type SilverlightApplicationName
 あとはメニューのDebugから、Go→Break→一覧表示を繰り返して、メモリリークの原因を突き止めましょう。
 さらに詳しい情報はこことかこことか。

【 結 論 】
メモリリークはなくてもブラウザのメモリ使用量は時間とともに増加する...らしい?

トラックバック(0)

このブログ記事を参照しているブログ一覧: [Silverlight]メモリリークの原因を調べる

このブログ記事に対するトラックバックURL: http://ushi.donburi.net/mt/mt-tb.cgi/80

コメントする

このブログ記事について

このページは、くわが2009年12月 1日 20:19に書いたブログ記事です。

ひとつ前のブログ記事は「松屋のメニューが最大60円値下げ」です。

次のブログ記事は「吉野家の牛丼が期間限定で300円に」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

Powered by Movable Type 6.0.3
ぎゅう♪ぎゅう♪ぎゅう♪ぎゅう♪ ぎゅう♪ぎゅう♪ ぎゅう♪ぎゅう♪