我的 asp.net 应用程序在内存 session 中有一个对象,它存储“学校”对象的实例,在这个学生集合中有 100 个学生。在我使用完 Students 对象后,如果我分配 Students= null/Students.Clear()。
我的问题是,它会释放 Students 对象占用的内存吗?或者它将等待学校对象从 session 中完全删除。
序列化得到的大小:
包含 100 个学生的学校对象的总内存大小:10kb
删除学生对象后的学校对象大小:1 kb
上面的结果也会反射(reflect)到 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; }
}
最佳答案
正如您正确假设并已在上面的评论中指出的那样,Garbage Collector如果在运行的应用程序中不再引用它,将释放对象的内存。 Session 在这里也不异常(exception)。
如果您在 Session 中有一个 school 对象并且您将 Students 对象设置为 null,并且在任何地方都没有对集合对象的其他引用,GC 迟早会收集它们。
This article还有一段关于这个话题。
关于c# - 清除部分对象后的 asp.net session 内存大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7368927/