Module  java.base
软件包  java.lang.ref

Class SoftReference<T>



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

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

    虚拟机抛出一个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
        重写:
        getReference<T>
        结果
        The object to which this reference refers, or null if this reference object has been cleared