再現させる
- Prismの問題かどうかは不明
- 再現しているPCのスペックに合わせる(メモリ容量、OS、ビット数)
- 再現する際、メモリ容量、OS、ビット数を合わせる。PCに入っている他アプリケーションが悪さしている可能性がある。
- Windowsアップデートのパッチ当て状況でも変わる
- パッチを抜いたら改善したこともある
- 最新のアップデートが当たっているPCかどうかも注目
- DELLのあるソフトが起動していることが原因でメモリリークしていることもあった
- 再現しないと調査できない
- メモリ使用量で計測する。開発PCで再現しないのはスペックがいいだけの可能性あり
- タスクマネージャー見ながら、メモリ容量が減らず、積もっていくことがあればメモリリーク。
- 32bitマシン(32ビットCPUを採用したコンピュータ)とかであれば、アプリケーションに与えられるメモリ容量が4GBとかしかない
- ネイティブDLLの使用があれば疑う
- Microsoft推奨メモリ使用量診断ツールを使用する
再現したら
- どこでリークしているかを突き止める
- コードのバイナリーで探索
- コードを半分消す
- 再現しなくなったら消した側に問題あり
- 再現し続けていたらさらに半分消す
- たいてい原因はどこかの1行
場所が分かったら
- Dispose漏れ?
- 画面遷移のやり方で改善する?
- イベントが登録されたままで画面を閉じている
- 外部接触部分
- サードパーティー
- 大胆にツールを使わないバージョンで作ってみる
- ミニマムにする
- Prismを使わないようにしてみる
- DBと接触しないようにしてみる
- ファイルとアクセスしないようにしてみる