何时使用WeakReference?

时间:2014-02-12 13:21:11

标签: java weak-references

我理解Java WeakReference是什么。我想知道的是它通常用作哪种具体问题作为解决方案。有没有包含它们的模式?

1 个答案:

答案 0 :(得分:3)

WeakReferenceSoftReference用于保存某些内容以防再次需要时 - 但您可能不需要它,如果您确实需要它,则可以重新创建它。

例如,如果你有一个从网站上获取的信息缓存,你不想经常重新获取它,但如果你需要记忆,你可以随时丢弃你所拥有的东西。如果你确实需要,可以暂时使用它。

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

另一方面,

WeakReference GC可以随时清理。

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