垃圾收集器何时会清除使用Singleton模式的对象的实例? [英] When would the garbage collector erase an instance of an object that uses Singleton pattern?
问题描述
垃圾收集器何时会清除使用Singleton模式的对象的实例?
When would the garbage collector erase an instance of an object that uses Singleton pattern?
某个对象是否比常规对象更久一些?
Does an object hang around any longer than a regular object?
如何在Java中手动强制删除/垃圾收集对象?
How can you manually force deletion/garbage collection of an object in Java?
谢谢。
推荐答案
有一个静态引用单例,所以在类加载器有资格进行垃圾收集之前,它将不符合垃圾收集的资格。
There's a static reference to a singleton, so it won't be eligible for garbage collection until the classloader is eligible for garbage collection.
你不能强制任何对象被垃圾收集;您可以通过请求 rel =noreferrer> System.gc()
,但这只是一个请求。
You can't force any object to be garbage collected; you can request that the garbage collector runs with System.gc()
but it's only a request.
如果你真的想让一个单身人士符合垃圾收集条件,你可能希望有一个方法来将静态变量设置为空(并且希望没有其他的使用引用的副本)。显然,下一次有人要求一个实例,它将需要重新创建...在这一点上,它不是一个真正的单身,当然。
If you really want to make a "singleton" eligible for garbage collection, you'd probably want to have a method to set the static variable to null (and hope that nothing else had taken a copy of the reference). Obviously the next time anyone asked for an instance, it would need to be recreated... at which point it's not really a singleton, of course.
这篇关于垃圾收集器何时会清除使用Singleton模式的对象的实例?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!