`
TonySun3544
  • 浏览: 162046 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

SoftReference<T>

    博客分类:
  • Java
阅读更多

类 SoftReference<T>

 

java.lang.Object 继承者

java.lang.ref.Reference<T> 继承者

java.lang.ref.SoftReference<T>

 

 

 

public class SoftReference<T>
extends Reference<T>

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

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

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

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

 

 


构造方法摘要
SoftReference(T referent)
创建引用给定对象的新的软引用。
SoftReference(T referent, ReferenceQueue<? super T> q)
创建一个引用给定对象的新的软引用,并向给定队列注册该引用。

 

方法摘要
T get()
返回此引用对象的指示对象。


从类 java.lang.ref.Reference 继承的方法
clear, enqueue, isEnqueued


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

<!-- ========= CONSTRUCTOR DETAIL ======== --><!-- -->

构造方法详细信息


SoftReference

public SoftReference(T referent)
创建引用给定对象的新的软引用。新的引用没有向任何队列注册。

 

参数:
referent - 新的软引用将引用的对象


SoftReference

public SoftReference(T referent,
                     ReferenceQueue<? super T> q)
创建一个引用给定对象的新的软引用,并向给定队列注册该引用。

 

参数:
referent - 新的软引用将引用的对象
q - 该引用向其注册的队列,如果不需要注册,则为 null

 


方法详细信息


get

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

 

覆盖:
Reference<T> 中的 get
返回:
此引用所引用的对象;如果此引用对象已经清除,则返回 null

 

 


 

分享到:
评论

相关推荐

    深入探讨 java.lang.ref 包1

    SoftReference&lt;Bean&gt; bean = new SoftReference&lt;&gt;(new Bean("name", 10)); System.out.println(bean.get()); // 输出 "name:10" ``` 软引用通过 `get()` 方法获取对象的强引用,当对象被回收后,`get()` 方法将返回...

    很容易弄错的java面试题

    extends T&gt;和&lt;? super T&gt;的使用场景。 9. **反射**:Java反射机制的应用与潜在风险。反射可以动态地获取类信息并操作对象,但过度使用可能导致性能下降和安全性问题。 10. **设计模式**:常见的设计模式如单例、...

    Java中管理资源的引用队列相关原理解析

    WeakReference&lt;T&gt; weakRef = new WeakReference&lt;&gt;(referent, referenceQueue); ``` 这里的`referent`是目标对象,`referenceQueue`则是引用队列。当垃圾回收器确定`referent`对象达到特定的可达性状态(如弱可达或...

    详解java中Reference的实现与相应的执行过程

    super T&gt; queue)`:创建一个关联指定队列的引用对象。当对象将要被回收时,引用对象会被添加到队列中,便于外部监控。 `NULL` 队列是一个特殊队列,不会保存任何数据,用于表示不需要额外处理的情况。 三、`...

    面试官:详细谈谈Java对象的4种引用方式

    软引用是通过 SoftReference 类实现的,其生命周期比强引用短一些。软引用可以与引用队列(ReferenceQueue)联合使用。软引用可以用来实现内存敏感的缓存,当内存不足时,就清理掉缓存,以免耗尽内存。例如,图片...

    java四种引用及在LeakCanery中应用详解

    1. 强引用(StrongReference)是最常见的引用类型,如`String tag = new String("T")`中的`tag`就是强引用。强引用对象只要不被显式地设为null,就不会被垃圾回收器回收,即使系统内存紧张。因此,如果一个对象只被...

    【05-面向对象(下)】

    基本数据类型的包装类 •八大数据类型的包装类...(a,b, ...) -&gt; 特定对象.实例方法(a,b, ...) 引用某类对象的实例方法 类名::实例方法 函数式接口中被实现方法的第一个参数作为调用者,后面的参数全部传给该...

Global site tag (gtag.js) - Google Analytics