C# web应用程序中静态变量在内存方面的缺点是什么;演出
我在Global.asax.中定义了静态变量,我想在我网站的所有网页中使用该变量 所以我只想知道,在web应用程序中,全局静态变量在内存和性能方面是否有任何缺点C# web应用程序中静态变量在内存方面的缺点是什么;演出,c#,performance,memory-management,global-variables,C#,Performance,Memory Management,Global Variables,我在Global.asax.中定义了静态变量,我想在我网站的所有网页中使用该变量 所以我只想知道,在web应用程序中,全局静态变量在内存和性能方面是否有任何缺点 在内存和性能方面,应用程序变量相对于全局静态变量是否有任何特定的优势。假设您尝试缓存一个简单的值,在内存或性能方面没有真正的劣势,但这取决于您尝试执行的操作 如果您需要一个方便的地方来保存编译时已知的只读值,那么最好使用const 如果您想缓存一些简单的全局值,比如应用程序版本号作为字符串,那么将其放在静态中是完全可以的 您应该认识到的
在内存和性能方面,应用程序变量相对于全局静态变量是否有任何特定的优势。假设您尝试缓存一个简单的值,在内存或性能方面没有真正的劣势,但这取决于您尝试执行的操作 如果您需要一个方便的地方来保存编译时已知的只读值,那么最好使用
const
如果您想缓存一些简单的全局值,比如应用程序版本号作为字符串,那么将其放在静态中是完全可以的
您应该认识到的一点是,应用程序对象(即Global.asax)不是单例对象。应用程序可能有多个实例,例如,当IIS决定是时候回收应用程序池时。AFAIK应用程序实例将在不同的AppDomain中运行,因此静态变量也将有多个实例
因此,永远不要在应用程序对象上使用静态变量来存储在运行时修改的信息。无法保证信息在请求之间持久化。假设您试图缓存一个简单的值,在内存或性能方面没有真正的缺点,但这取决于您尝试执行的操作 如果您需要一个方便的地方来保存编译时已知的只读值,那么最好使用
const
如果您想缓存一些简单的全局值,比如应用程序版本号作为字符串,那么将其放在静态中是完全可以的
您应该认识到的一点是,应用程序对象(即Global.asax)不是单例对象。应用程序可能有多个实例,例如,当IIS决定是时候回收应用程序池时。AFAIK应用程序实例将在不同的AppDomain中运行,因此静态变量也将有多个实例
因此,永远不要在应用程序对象上使用静态变量来存储在运行时修改的信息。无法保证信息在请求之间持久化。这可能会引起一些兴趣,实际上取决于您需要服务的目的是什么。这可能会引起一些兴趣,实际上取决于您需要服务的目的是什么