什么时候使用弱引用?

And*_*res 3 java weak-references

我了解 Java 弱引用是什么。我想知道的是它通常用于解决哪种具体问题。有没有包含它们的模式?

Tim*_*m B 5

WeakReference并且SoftReference在您想要保留某些东西以备再次需要时使用 - 但您可能不需要它,如果确实需要它,您可以重新创建它。

例如,如果你有一个从网站上获取的信息缓存,你不想不断地重新获取它,但是如果你需要内存,你总是可以放下一些你有一段时间没有使用过的东西,然后把它找回来如果您确实需要它,请再次使用。

SoftReferences 特别是对于这种缓存很有用,因为它告诉 GarbageCollector 不要删除对象,除非它真的需要释放内存。

WeakReference 另一方面,GC 可以根据需要尽快清理。

我之前结合工厂模式使用过它们。SoftReference在工厂中创建对象时保留一个to 对象。如果再次请求它们,则返回已经创建的对象。如果它们不存在或已被垃圾收集,则创建它们,返回它们,并SoftReference在工厂内部保留一个。