模块 java.base

类 SoftReference<T>

java.lang.Object
java.lang.ref.Reference <T>
java.lang.ref.SoftReference<T>
类型参数:
T - 对象的类型

public non-sealed class SoftReference<T> extends Reference <T>
软引用对象,由垃圾收集器根据内存需求自行清除。软引用最常用于实现对内存敏感的缓存。

假设垃圾收集器在某个时间点确定一个对象是 轻轻触及 。那时它可能会选择以原子方式清除对该对象的所有软引用以及对任何其他可通过强引用链访问该对象的任何其他可软访问对象的软引用。同时或在稍后的某个时间,它会将那些在引用队列中注册的新清除的软引用排入队列。

在虚拟机抛出 OutOfMemoryError 之前,保证已清除对软可达对象的所有软引用。否则,对清除软引用的时间或清除对不同对象的一组此类引用的顺序没有任何限制。然而,鼓励虚拟机实现偏向于清除最近创建或最近使用的软引用。

此类的直接实例可用于实现简单的缓存;此类或派生子类也可用于更大的数据结构以实现更复杂的缓存。只要软引用的引用对象是强可达的,即实际在使用中,软引用就不会被清除。因此,一个复杂的缓存可以,例如,通过保持对这些条目的强引用来防止其最近使用的条目被丢弃,而让剩余的条目由垃圾收集器自行决定丢弃。

自从:
1.2
  • 构造方法详细信息

    • SoftReference

      public SoftReference(T  referent)
      创建引用给定对象的新软引用。新引用未在任何队列中注册。
      参数:
      referent - 新软引用将引用的对象
    • SoftReference

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

    • get

      public T  get()
      返回此引用对象的引用对象。如果此引用对象已被程序或垃圾收集器清除,则此方法返回 null
      重写:
      get 在类 Reference<T>
      返回:
      此引用所指的对象,如果此引用对象已被清除,则为 null
      参见: