前几天我只是想知道这个。我不太确定 ASPX 如何管理垃圾处理,但据我所知,“完成加载”不会删除静态内存值,也不会在页面重新加载后删除。至少就 C 而言,静态意味着内存分配遵循您的程序,直到程序本身关闭。在 ASPX 中也是这样吗?如果我有一个静态值并且我从页面 A 转到页面 B,该静态值是否仍然保留在 RAM 中直到他们离开应用程序,或者一旦我不再在页面 A 上该值是否被删除? (转到另一个网站,从服务器的应用程序池中删除他们的实例)。
根据我的经验:
public static class foo
{
public static int x;
}
protected void Page_Load(object sender, EventArgs e)
{
foo.x++; //This will continue to increment from the last value before reload
}
最佳答案
在 ASP.NET 中应避免使用静态类。它们会保留在内存中,直到应用程序重新启动,并且会受到许多并发错误和竞争条件的影响。
并且关闭用户 session (浏览器 session )不会重新启动应用程序!即使用户离开并返回,它们也会保留在内存中。所以真的真的要避免静态类!
关于c# - ASP.NET 中的静态对象会浪费内存吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11128750/