2011-09-10 47 views
2

Im我的asp.net應用程序我有一個對象在內存會話中存儲「學校」對象的實例,在這個學生集合有100名學生。如果我分配Students = null/Students.Clear(),我完成使用Students對象後。asp.net會話內存大小清除對象的一部分

我的問題是,它會釋放學生對象佔用的內存嗎?或者它會等待學校對象完全從會話中刪除。通過獲得

尺寸連載:

與學生的100的學校對象的總內存大小:10KB

學校物體大小刪除Student對象後:1 KB

將上述結果反映在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小麥:當GC運行時,它將釋放清除的學生對象使用的內存 – user841683

+1

是的。前提是沒有其他對集合中包含的對象的引用。 –

回答

1

正如你正確地估計和已經在上面的評論中指出,該Garbage Collector將釋放對象的內存,如果沒有更多提到它在運行的應用程序。會議在這裏也不例外。

如果在會話中有一個學校對象,並且您將Students對象設置爲null,並且沒有其他任何對任何位置的集合對象的引用,GC將遲早收集它們。

This article也有一個關於該主題的文章。