垃圾收集器可以解除分配单例实例吗? (以及为什么或如何避免它)

时间:2013-03-02 16:06:47

标签: android garbage-collection singleton dealloc

在Android中我有单例类,但我不确定垃圾收集器是否可以解除分配。

如果垃圾收集器将解除分配我的单例类,如何避免重新分配?

3 个答案:

答案 0 :(得分:3)

垃圾收集会收集没有指向任何内容的对象,除非引用是静态的。 Are static fields open for garbage collection?

答案 1 :(得分:1)

gc将处理您的实例的唯一原因是整个应用程序都被销毁了......

答案 2 :(得分:1)

有很多方法可以实现Singleton。其中最好的是:

public static enum My { SINGLETON; }

某件事物是否是单身人士与是否是GCed无关。如果没有强引用,则对象将被GC。查找(http://weblogs.java.net/blog/2006/05/04/understanding-weak-references)。

还有一个问题值得关注。在Android中,您的应用程序无法控制它的生命周期。进程可能会以您不期望的方式终止和重新创建。如果发生这种情况,将重新初始化静态最终变量。这里有更多内容:

http://portabledroid.wordpress.com/2012/05/04/singletons-in-android/