我理解Java WeakReference是什么。我想知道的是它通常用作哪种具体问题作为解决方案。有没有包含它们的模式?
答案 0 :(得分:3)
WeakReference
和SoftReference
用于保存某些内容以防再次需要时 - 但您可能不需要它,如果您确实需要它,则可以重新创建它。
例如,如果你有一个从网站上获取的信息缓存,你不想经常重新获取它,但如果你需要记忆,你可以随时丢弃你所拥有的东西。如果你确实需要,可以暂时使用它。
SoftReferences
特别适用于这种缓存,因为它告诉GarbageCollector不要除去对象,除非它真的需要释放内存。
WeakReference
GC可以随时清理。
我在结合工厂模式之前使用过它们。在工厂中创建对象时,请保留SoftReference
对象。如果再次询问它们,则返回已创建的对象。如果它们不存在或已经被垃圾收集,那么创建它们,返回它们,并在工厂内保留SoftReference
。