返回介绍

java.lang.ref 类 SoftReference<T>

发布于 2019-10-04 09:51:15 字数 2844 浏览 956 评论 0 收藏 0

java.lang.Object
  └java.lang.ref.Reference<T>
      └java.lang.ref.SoftReference<T>

public class SoftReference<T>
extends Reference<T>
 

软引用对象,在响应内存需要时,由垃圾回收器决定是否清除此对象。软引用对象最常用于实现内存敏感的缓存。

假定垃圾回收器确定在某一时间点某个对象是软可到达对象。这时,它可以选择自动清除针对该对象的所有软引用,以及通过强引用链,从其可以到达该对象的针对任何其他软可到达对象的所有软引用。在同一时间或晚些时候,它会将那些已经向引用队列注册的新清除的软引用加入队列。

软可到达对象的所有软引用都要保证在虚拟机抛出 OutOfMemoryError 之前已经被清除。否则,清除软引用的时间或者清除不同对象的一组此类引用的顺序将不受任何约束。然而,虚拟机实现不鼓励清除最近访问或使用过的软引用。

此类的直接实例可用于实现简单缓存;该类或其派生的子类还可用于更大型的数据结构,以实现更复杂的缓存。只要软引用的指示对象是强可到达对象,即正在实际使用的对象,就不会清除软引用。例如,通过保持最近使用的项的强指示对象,并由垃圾回收器决定是否放弃剩余的项,复杂的缓存可以防止放弃最近使用的项。

从以下版本开始:
1.2

构造方法摘要
SoftReference(Treferent)

创建引用给定对象的新的软引用。

SoftReference(Treferent, ReferenceQueue<? super T>q)

创建一个引用给定对象的新的软引用,并向给定队列注册该引用。

方法摘要
Tget()

返回此引用对象的指示对象。

从类 java.lang.ref.Reference 继承的方法
clear, enqueue, isEnqueued
从类 java.lang.Object 继承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

构造方法详细信息

SoftReference

public SoftReference(Treferent)
创建引用给定对象的新的软引用。新的引用没有向任何队列注册。
参数:
referent - 新的软引用将引用的对象

SoftReference

public SoftReference(Treferent,
                     ReferenceQueue<? super T>q)
创建一个引用给定对象的新的软引用,并向给定队列注册该引用。
参数:
referent - 新的软引用将引用的对象
q - 该引用向其注册的队列,如果不需要注册,则为 null

方法详细信息

get

public T get()
返回此引用对象的指示对象。如果此引用对象已经由程序或垃圾回收器清除,则此方法将返回 null
覆盖:
Reference<T> 中的 get
返回:
此引用所引用的对象;如果此引用对象已经清除,则返回 null

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文