ASP.NET中的静态对象浪费内存?

Ser*_*rov 6 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
  }
Run Code Online (Sandbox Code Playgroud)

Jas*_*ira 5

ASP.NET中应避免使用静态类.它们保留在内存中,直到应用程序重新启动并受到许多并发错误和竞争条件的影响.

关闭用户会话(浏览器会话)不会重新启动应用程序!即使用户离开并回来,他们也会留在记忆中.所以真的要避免静态类!

  • 请注意,有些情况下,如果您确实需要在整个应用程序中共享信息,则可能需要使用静态变量.但在这种情况下我宁愿使用Singleton. (2认同)