垃圾收集器何时会擦除使用单例模式的对象实例? [英] When would the garbage collector erase an instance of an object that uses Singleton pattern?
问题描述
垃圾收集器何时会擦除使用单例模式的对象实例?
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.
你不能强制任何对象被垃圾回收;您可以请求垃圾收集器使用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.
如果你真的想让一个单例"有资格进行垃圾回收,你可能想要一种方法来将静态变量设置为 null(并希望没有其他东西复制了引用).显然,下次有人请求实例时,它需要重新创建……当然,此时它就不是真正的单例了.
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.
这篇关于垃圾收集器何时会擦除使用单例模式的对象实例?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!