单例模式的内存分配

时间:2010-02-14 15:35:38

标签: c# design-patterns singleton memory-management

如果我们在Web应用程序中使用单例模式,那么释放分配给我们类的指定内存?

2 个答案:

答案 0 :(得分:2)

技术答案:卸载AppDomain或关闭进程时释放内存。

更好的答案:只要GC决定释放内存,就会释放内存。你不知道也不应该关心。如果您的Singleton正在跟踪非托管资源(即文件句柄,GDI句柄,任何其他而非内存),并且您需要在应用程序仍在“运行”时随时释放它们,那么Singleton需要提供必要的方法。

答案 1 :(得分:1)

单身人士最有可能使用static变量来实现。结束static变量不是垃圾收集的(除非他们的类加载器是垃圾收集的)。

因此单例采用的内存永远不会自动释放,因为单例永远不会被垃圾收集。

但是,您可以将static变量设置为null。然后我认为它将被垃圾收集。

当您停止容器(IIS或其他)时,将释放内存,并在重新启动时再次实例化单例。

P.S。看起来我在谈论Java,但它在C#中几乎是一样的