日期:2014-05-18  浏览次数:20379 次

ASP.net中页面变量的状态?
Asp.net在页中声明并实例一个类的实例(如:三层结构中的DB类的实例)
例如:
a.aspx.cs
partial class p1 : Page
{
  dbClass db = new dbClass();
  protected void Page_Load( o,e)
  {
  }
}

这时候 变量db是存放在哪部分的内存中? 注:这时变量每次刷新页面都会重新创建一个新的.
若定义改为 " static dbClass db = new dbClass(); " 这样,每次刷新页面后,这个静态变量都是同一个,即不会重新创建.
但这时候的变量 db 应该会存放在那部分的内存中??

有这方面认识的朋友,麻烦解答一下.

谢谢....

------解决方案--------------------
非静态的变量的生存期就是页面的生存期,静态变量只实例化一次,其生存期是整个网站应用程序的生存期
它们都是在服务器内存中的
------解决方案--------------------
探讨
谢谢,
那即是这个变量第一次赋值后,就不会再变,不同用户从不同地点访问,这个值都是一样的?

------解决方案--------------------
静态变量存在于内存的静态区,生命周期很长,应用程序结束

一般变量实例化时存在于内存的堆中,页面销毁时,就会被回收。
------解决方案--------------------
在B/S结构中 静态变量很容易出现并发冲突,用户访问的都是同一个内存地址,所以在处理时一定要小心,不然很难发现问题的,一般用来存储公用并且不会在运行时修改的值.
如果是一个集合或者需要修改的,一定要lock住在进行操作