垃圾收集器将如何处理在ASP.NET MVC会话(How will the Garbage Coll

2019-10-21 01:23发布

public Dictionary<string, IMYObject> MYObjectContainer
{
    get
    {
        if (Session["MYObjectPool"] == null)
            Session["MYObjectPool"] = new Dictionary<string,IMYObject>();
        return (Dictionary<string, IMYObject>)Session["MYObjectPool"];
    }
    set
    {
        Session["MYObjectPool"] = value;
    }
}

public ActionResult Close()
{
    try
    {
        MyObject obj = this.MYObjectContainer["Key"] 
        this.MYObjectContainer = null;             
        return Json(new { success = true }, JsonRequestBehavior.AllowGet);
    }
    catch (Exception Ex)
    {
        throw X
    }
}

垃圾收集器将删除当对象没有有效的裁判这里有两个裁判,

1.obj(本地变量)

2.Session

首先,我作了发言裁判无效通过设置this.MYObjectContainer = null; 第二,当函数结束的物镜将被弹出栈从而第二裁判是无效

这是否使得MYObjectContainer符合垃圾收集器被清除?

请忽略,如果我的问题是完全错误的,请咨询我?

垃圾收集器在ASP.NET会话如何工作的?

Answer 1:

在您的例子Session对象上面不会被垃圾收集,直到会话超时。

你必须决定这是不是你想要的行为或不:) - 你以后需要的对象?

如果你想删除会话对象,你也得写Session["MYObjectPool"] = nullSession.Remove("MYObjectPool")这也将这样做)

具有会话周围铺设的对象很多时候是没有问题的,但如果对象是大(例如兆字节甚至千兆字节)和/或你有很多用户(所有的谁就会得到他们自己的会话),或许多网站在同一服务器有周围铺设将是一个问题的对象。

会议是很方便的,但你必须认识到其局限性...



文章来源: How will the Garbage Collector handle a Session in ASP.NET MVC