スポンサーリンク

C#でメモリリークを発生させないようにするには?

C#には不要になったメモリを自動で解放してくれるガベージコレクションというものがあります。

こちらは不要と判断されたら自動でメモリ解放してくれますが、手動でも不要になったということをガベージコレクションに伝えることもできます。

メモリリークが発生した場合はどこかでメモリが確保(new)されて解放されていない状態だと思います。

上記の状態とならないように、以下の対応を実施してみましょう。

・配列でnewされている配列は使わなくなったらnullを入れてみる。

・ファイルの書き込みなどを「System.IO.FileStream」で実行した場合は終了時に「Close」メソッドか「Dispose」メソッドを呼び出す。

・usingステートメントを使用してusingの処理を抜けたらメモリが解放されるようにする。

上記の点を確認してみて、まずメモリリリークが発生している箇所の特定に努めたらいいかと思います。

実装方法については以下のサイトがとても分かりやすかったのでリンクを張っておきます。

オブジェクトの破棄(C#) – 超初心者向けプログラミング入門