【问题标题】:What is disadvantage of static variable in web application respect to memory & performance?Web 应用程序中的静态变量在内存和性能方面有什么缺点?
【发布时间】:2011-07-22 11:26:13
【问题描述】:
我在 Global.asax 中定义了静态变量。我想在我网站的所有网页中使用该变量。
所以我只想知道这个全局静态变量在 Web 应用程序的内存和性能方面有什么缺点吗?
在内存和性能方面,应用程序变量相对于全局静态变量是否有任何特定优势。
【问题讨论】:
标签:
c#
performance
memory-management
global-variables
【解决方案1】:
假设您正在尝试缓存一个简单的值,那么在内存或性能方面并没有真正的劣势,但这取决于您要执行的操作。
如果您需要一个方便的地方来保存编译时已知的只读值,最好使用const。
如果你想缓存一些简单的全局值,比如应用程序版本号作为一个字符串,把它放在一个静态中是完全可以的。
您应该意识到,Application 对象(即 Global.asax)不是单例。应用程序的实例可能不止一个,例如,当 IIS 决定是时候回收应用程序池时。 AFAIK 应用程序实例将在不同的 AppDomain 中运行,因此您的静态变量也会有多个实例。
因此,您永远不应该在应用程序对象上使用静态变量来存储在运行时修改的信息。根本无法保证信息在请求之间保持不变。