tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
[ツリー表示へ]  [ワード検索]  [Home]

タイトル Re^3: クラスの破棄について
投稿日: 2009/05/12(Tue) 18:06
投稿者YuO
> ・Profileインスタンスの参照を切ってGC.Collect()を呼ぶ→回収されず
> ・Profile.Disposeメソッドを実装してDispose()を呼ぶ→回収された
> という現象が納得いかないです。

ファイナライザが存在する場合,
最初のガベージコレクトにおいてファイナライザの呼び出しがなされ,
2度目のガベージコレクトによってメモリが回収されます。
このため,ファイナライザが存在する場合,
第1世代のガベージコレクトが行われないとメモリは回収されませんし,
都合2度GC.Collectを呼び出さないとメモリは回収されません。

さらに,世代が上がるため,回収の行われる可能性が低くなっています。

通常のDisposeの実装では,GC.SuppressFinalizeの呼び出すことにより,
上記の動作を抑制します。
つまり,Disposeの呼び出しにより第0世代のガベージコレクトにおいて
メモリが回収されるようになります。

- 関連一覧ツリー をクリックするとツリー全体を一括表示します)

古いスレッドにレスはつけられません。