[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のメモリリーク検出方法。
手順を簡単にメモ。
- IE上でSilverlightアプリケーションを起動
- WinDbgを起動する(スタート→プログラム→Debugging Tools for Windows)
- WinDbgのメニューから[File]→[Attach to a Process]を選択し、プロセス一覧から"iexplore.exe"を選択してOKをクリック
- 画面下部のコマンド入力欄に以下のコマンドを入力してsos.dllをロード
.load C:\\Program Files\\Microsoft Silverlight\\3.0.40818.0\\sos.dll
(※ パスは環境によって変わります/※2 先頭の"."を忘れずに) - 以下のコマンドで、Silverlightアプリケーション内のインスタンス名、数、使用メモリが一覧表示されます。("SilverlightApplicationName"の部分は適宜編集してください)
!dumpheap -stat -type SilverlightApplicationName
さらに詳しい情報はこことかこことか。
【 結 論 】
メモリリークはなくてもブラウザのメモリ使用量は時間とともに増加する...らしい?
トラックバック(0)
このブログ記事を参照しているブログ一覧: [Silverlight]メモリリークの原因を調べる
このブログ記事に対するトラックバックURL: http://ushi.donburi.net/mt/mt-tb.cgi/80



コメントする