2011-09-10 8 views
2

私のasp.netアプリケーション私は "学校"オブジェクトのインスタンスを格納するメモリセッション内のオブジェクトを持って、この学生コレクションは100人の学生がいます。 学生がnull = Students.Clear()を割り当てた場合、Studentsオブジェクトを使用して終了した後。asp.netセッションメモリサイズオブジェクトの一部をクリアした後

私の質問ですが、Studentsオブジェクトが占有していたメモリを解放しますか?それとも、学校オブジェクトがセッションから完全に削除されるのを待つでしょう。学生の100年代と学校のオブジェクトの

合計メモリサイズ:10キロバイト

学校のオブジェクトのサイズを学生オブジェクトを除去した後:シリアライズを経て得られた

サイズ1キロバイト

は、上記の結果が反映されますRAMにも?

public class school 
{ 
    public string SchoolName { get; set; } 
    public string SchoolAddress { get; set; } 
    public List<student> Students { get; set;} 
} 

public class student 
{ 
    public string Name { get; set; } 
} 
+0

ガベージコレクタ(GC)を実行すると、管理対象メモリが解放されます。 –

+0

@Mitch Wheat:GC実行時に、クリアされた生徒オブジェクトによって使用されるメモリが解放されます。 – user841683

+1

はい。コレクション内に含まれるオブジェクトへの他の参照がない場合に限ります。 –

答えて

1

あなたが正しく仮定して、すでに上記のコメントで指摘したように実行中のアプリケーションで、それをこれ以上の言及がある場合、Garbage Collectorは、オブジェクトのメモリを解放します。セッションも例外ではありません。

セッションにスクールオブジェクトがあり、Studentsオブジェクトをnullに設定し、コレクションオブジェクトへの他の参照をどこにも持たない場合、GCは遅かれ早かれそれらを収集します。

This articleにもトピックに関する記事があります。

関連する問題