【C#】ガベージ・コレクション(Garbage Collection、GC)

概要

http://mzs184.blogspot.jp/2008/01/gc.html
より抜粋
 * ガベージコレクションは、あくまでも new したオブジェクトを解放してくれるもの
  => ファイルリソースやネットワーク接続リソースについては、Disposeなどで、
   明示的に解放する処理を記述する必要がある
http://www.atmarkit.co.jp/fdotnet/dotnettips/021gc/gc.html
より抜粋
 * ガベージ・コレクタはシステムが必要とした場合には随時実行されるので、
  完全に意図的にコントロールすることはできない。
 * 基本的には、ガベージ・コレクションは、意識的に操作するものではなく、システムに任せるもの。

利点

ガベージ・コレクションとの利点いうより目的であるが...

 * リソース(メモリ)を即時に開放するため、そのリソースを目一杯利用できる

欠点

 * パフォーマンスが悪い(理由は、後述を参照)
  => むやみにやるべきではない
http://msdn.microsoft.com/ja-jp/library/ms998547.aspx
より
 ■ GC.Collect の呼び出しを避ける
  => すべてのオブジェクトに接触しなければならなくなるため、大きな負担が発生する

GCを明示的に行う

http://www.atmarkit.co.jp/fdotnet/dotnettips/021gc/gc.html

構文

GC.Collect();

強制的にGCを行う

サンプル

http://msdn.microsoft.com/ja-jp/library/ms998547.aspx
より抜粋
// アクセス不可能なオブジェクトを除去
System.GC.Collect(); 
// ファイナライゼーションが終わるまでスレッド待機 
System.GC.WaitForPendingFinalizers(); 
// ファイナライズされたばかりのオブジェクトに関連するメモリを開放 
System.GC.Collect();

参考文献

http://ch.cri-mw.co.jp/hirase/55337.html
http://msdn.microsoft.com/ja-jp/library/system.gc.waitforpendingfinalizers.aspx

関連記事

ガベージ・コレクション(Garbage Collection、GC

http://blogs.yahoo.co.jp/dk521123/29621938.html

モリー管理 ~メモリーリーク調査ツール編~

http://blogs.yahoo.co.jp/dk521123/30154754.html

メモリ管理 ~知識編~

http://blogs.yahoo.co.jp/dk521123/30157489.html