我的asp.net应用程序我在内存会话中有一个对象,它存储了“School”对象的实例,在这个学生集合中有100个学生。在我完成使用Students对象后,如果我指定学生= null / Students.Clear()。
我的问题是,它会释放学生对象占用的内存吗?或者它将等待学校对象完全从会话中移除。
通过序列化获得的尺寸:
100名学生的学校对象的总内存大小:10kb
学校对象大小删除学生对象后: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 :(得分:1)
正如您正确假设的那样,正如上面的评论中已经指出的那样,如果在运行的应用程序中没有对象的更多引用,Garbage Collector将释放对象的内存。会议在这里也不例外。
如果您在Session中有学校对象,并且您将Students对象设置为null,并且在任何地方都没有对集合对象的其他引用,那么GC迟早会收集它们。
This article也有关于该主题的段落。