ネイティブアプリ構築時にメモリリークを防ぐ定石

過去に関わったプロジェクトで、リリース間際に問題になったので、同じ轍を踏まないためにメモ。

参考URL
http://www.slideboom.com/presentations/381148

  1. C#, .NET, WPFでアプリを構築するとき、イベントの発行元と受信側でイベントの登録を解除しないで、受信側が勝手に消滅しようとしても発行側から参照されているので、消えられない。 (38-42枚目参照)
  2. ↑の回避のためにMicrosoftはWeak Eventパターンを用意している。しかし、いちいち実装とか説明とかやってられないレベルで面倒(スライド53枚目参照)
  3. Livetを使おう

余談
スライドを眺めてみると、メモリリークは、ステートフル(状態をもつ・持ち続ける)リッチクライアントアプリケーション特有の問題みたいで、
Webアプリでは起こりえない構成になっていると説明されています。

つまり、普段Webアプリケーションばっかり書いている人たちが、リッチクライアントを書いた時にハマる典型的な問題みたいですね。
過去のプロジェクト状況を見るとバッチリ当てはまっています。。。。