c# - 清除部分对象后的 asp.net session 内存大小

标签 c# asp.net

我的 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/

相关文章:

c# - 使用外部 SMTP 服务器发送邮件使用未在 Azure Web Apps 的传出 IP 中定义的 IP

c# - RegisterStartupScript 和 RegisterClientScriptBlock 的区别?

c# - CosmosDB System.ArgumentNullException : 'Value cannot be null. (Parameter ' authKeyOrResourceToken')'

c# - Range.Value 在 VBA 和 C# 中产生不同的结果

c# - 提交时在同一页面显示成功信息

c# - 从客户端应用程序自动安全地登录 Web

c# - ASP.NET 和 Neo4jClient - 在哪里存储连接?

c# - 不使用凭据 C# 发送邮件

关于大型项目中层分离的 ASP.Net 架构

c# - DropDownList + OnSelectedIndexChanged + AutoPostBack=False