如果我们在Web应用程序中使用单例模式,那么释放分配给我们类的指定内存?
答案 0 :(得分:2)
技术答案:卸载AppDomain或关闭进程时释放内存。
更好的答案:只要GC决定释放内存,就会释放内存。你不知道也不应该关心。如果您的Singleton正在跟踪非托管资源(即文件句柄,GDI句柄,任何其他而非内存),并且您需要在应用程序仍在“运行”时随时释放它们,那么Singleton需要提供必要的方法。
答案 1 :(得分:1)
单身人士最有可能使用static
变量来实现。结束static
变量不是垃圾收集的(除非他们的类加载器是垃圾收集的)。
因此单例采用的内存永远不会自动释放,因为单例永远不会被垃圾收集。
但是,您可以将static
变量设置为null
。然后我认为它将被垃圾收集。
当您停止容器(IIS或其他)时,将释放内存,并在重新启动时再次实例化单例。
P.S。看起来我在谈论Java,但它在C#中几乎是一样的