atsukanrockのブログ

Microsoft系技術を中心にぼちぼち更新します

Visual Studioでお手軽にメモリリーク調査♪

Visual Studio 2013 (VS) の "Performance and Diagnostics Hub" が超いいです。とうわけでこの記事は自分向けのリンク集です。

.NETアプリのメモリリーク調査には従来からWinDbgという方法がありましたが、WinDbgはとても手軽とは言えません。Performance and Diagnostics Hubなら、VSでデバッグ実行しながら好きな時にメモリ状態のスナップショットを取れます。スナップショットを取る前には好きな時にGCを実行できます。スナップショットには、メモリ使用量はもちろん、オブジェクト型毎のインスタンス数が記録されます。これらの値はスナップショット間での比較が可能なので、リークしている (≒インスタンス数が増え続ける) オブジェクトを特定できます。この記事の方がイメージが分かるスクリーンショットが多いですね。

なおVSのエディションがUltimateなら、Production環境 (ソースがない) でも解析が可能みたいですね。ProdDumpを使って取得したdumpファイルをVSで読み込んで、マネージドメモリーの調査ができるようです。良さそうですね。自分はUltimateエディションを使えないので試せませんが。

メモリリーク調査の基本的な考え方を知るには、"実戦的WPF・Silverlightメモリーリーク解消方法" (パワポ直リン注意) というパワポが良いと思いました。