[.NET] WindowsMobile上のC#アプリのメモリリークを解決せよ!

先週、思いっきりハマッた話です。
そもそも、自分が直接かかわっていないプロジェクトでいきなり日曜に呼び出されて、うんぬんかんぬん・・・ま、そいういった愚痴は置いといてw

このプロジェクトではあるWindowsMobile端末を使用しており、その上で動作する.NET(言語はC#)のアプリケーションにてメモリリークが発生しており、運用上使い物にならないレベルということだった。問題はあるフォームを「ShowDialog()」で開いて閉じてを繰り返すだけで、50KBずつリークするということはわかっていた。

何も確認せずにとりあえず、試してみてもらったのは以下の2つ。

  • メンバ変数でDataSetを使用しているようであれば、必ずDispos()すること。
  • フォームを閉じる際に、フォーム上のコントロールを全て明示的にDispose()すること。

しかし、上記の対応では効果が無かった(結果からすると、いい線をいっていたんだけど足りなかった・・・)。

続きを読む “[.NET] WindowsMobile上のC#アプリのメモリリークを解決せよ!”

[.NET] WindowsMobile上のC#アプリのメモリリークを解決せよ!

【.NET】ClipboardクラスのGetDataメソッドでメモリリーク

先月の仕事のお話。

開発中のアプリケーションである一連の操作を3時間近く連続実行すると突然落ちるという現象に遭遇した。HeapやPrivate Bytesといったメモリ量が増えていないことから、リークしているようにも見えず。Desktop Heap、ハンドル数、GDIオブジェクトでも異常値は見られなかった。
結局解決するまでに2か月近くかかったのだが、何とか問題を特定することができました( ´ー`)フゥー...
そして、同じようなことで困った人がいるかも?しれないので、ここにまとめておきます。

続きを読む “【.NET】ClipboardクラスのGetDataメソッドでメモリリーク”

【.NET】ClipboardクラスのGetDataメソッドでメモリリーク