c# - ASP.NET 中的静态对象会浪费内存吗?

标签 c# asp.net memory-management

前几天我只是想知道这个。我不太确定 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/

相关文章:

c# - 为什么我的 KeyPressEvent 不能与右/左/上/下一起使用?

c# - 使 DynamicMethod 调用其他方法

c - 使用后明确清除/归零敏感变量是否明智?

c - 如何确定 PIC32 中的 malloc 堆统计信息

c# - ASP.NET MVC 6 中的资源特定授权

c# - 在另一个仍然打开的窗体上调用方法?

asp.net - 如何关闭 INFO 级别的 NHibernate 日志记录?

asp.net - 是否可以通过dotnet核心(即Kestrel)提供.aspx文件?

asp.net - log4net 滚动文件附加程序不起作用

java - 字符串与字符 []