我有一个只读列表,它在应用程序的所有实例之间共享,并且不会经常更改。在静态类上创建一个属性来访问这个列表是一种好的做法吗?该列表是在静态构造函数中从数据库中填充的。将应用程序池设置为每晚回收将保证列表每天都是最新的,对吗?有什么理由认为这是个坏主意吗?谢谢!
发布于 2011-11-11 22:38:29
您应该了解静态属性是如何存储的。
粗略地说,所有静态都放在RuntimeType的实例中(反过来,它是在调用静态ctor时创建的)。通过C#的CLR详细描述了这种机制。
鉴于此,这个集合将在所有实例之间共享,但您应该记住所有潜在的内存泄漏(想象一下当您订阅集合事件时,所有页面即使在关闭时也变得可访问的情况)。
此方法的第二个缺点是此集合不是最新的。第三个缺点是,您需要注意此集合的线程安全性,这反过来会损害您的性能。
https://stackoverflow.com/questions/8095330
复制相似问题