Android 垃圾收集器能否取消分配单实例?(以及为什么或如何避免)

Android 垃圾收集器能否取消分配单实例?(以及为什么或如何避免),android,garbage-collection,singleton,dealloc,Android,Garbage Collection,Singleton,Dealloc,在Android中,我有singleton类,但我不确定垃圾收集器是否可以释放它 如果垃圾收集器将取消分配我的singleton类,如何避免它取消分配?gc将取消分配您的实例的唯一原因是如果整个应用程序被破坏…垃圾收集器收集没有指向的对象,除非引用是静态的 实现单例的方法有很多。最好的方法之一是: public static enum My { SINGLETON; } 某件事是否是单身并不影响它是否是GCD。如果一个对象没有强引用,它将被GCed。查一查() 还有一个问题值得关注。在Andr

在Android中,我有singleton类,但我不确定垃圾收集器是否可以释放它


如果垃圾收集器将取消分配我的singleton类,如何避免它取消分配?

gc将取消分配您的实例的唯一原因是如果整个应用程序被破坏…

垃圾收集器收集没有指向的对象,除非引用是静态的

实现单例的方法有很多。最好的方法之一是:

public static enum My { SINGLETON; }
某件事是否是单身并不影响它是否是GCD。如果一个对象没有强引用,它将被GCed。查一查()

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


有使用WeakReference的惯例,试着使用它。在Java中,没有“静态对象”这样的东西。对象的结构不能声明为静态,但可以有它的静态引用/实例。答案编辑为参考。是的!但是,我认为,你可以忽略所有关于静态引用的事情。你的答案是完整和正确的,在逗号处!这显然是错误的:考虑:
static{newobject();}
这是一个单例,它会立即被垃圾收集。