垃圾回收器将如何处理 MVC ASP.NET 会话
本文关键字:处理 MVC ASP 会话 NET 何处理 | 更新日期: 2023-09-27 18:24:06
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.会话
首先,我通过设置this.MYObjectContainer = null;
使会话裁判无效当函数结束时,obj 将从堆栈中弹出,因此第二个裁判无效
这是否使MYObjectContainer
有资格清除垃圾收集器?
如果我的问题完全错误,请忽略,请告诉我吗?
垃圾回收器如何在 ASP.NET 会话中工作?
在上面的示例中,在会话超时之前,不会对会话对象进行垃圾回收。
您必须决定这是否是您想要的行为 :) - 您以后需要该对象吗?
如果要从会话中删除对象,还必须编写Session["MYObjectPool"] = null
或Session.Remove("MYObjectPool")
(这将执行相同的操作(
很多时候,在会话中放置对象不是问题,但是如果对象很大(例如兆字节甚至千兆字节(和/或您有很多用户(所有人都将获得自己的会话(或同一服务器上的许多站点具有对象放置将是一个问题。
会话很方便,但您必须意识到它的局限性...