public class SoftReference
extends Reference<T>
java.lang.Object | ||
↳ | java.lang.ref.Reference<T> | |
↳ | java.lang.ref.SoftReference<T> |
软引用对象,由垃圾回收器根据内存需求自行决定清除。
假设垃圾收集器在某个时间点确定一个对象是softly reachable 。 在那个时候,它可能会选择自动清除对该对象的所有软引用,以及通过一系列强引用可以访问该对象的任何其他可轻度访问的对象的所有软引用。 在同一时间或稍后时间,它将使用参考队列注册的那些新清除的软引用排入队列。
在虚拟机抛出OutOfMemoryError
之前,所有对可轻松访问的对象的软引用都保证已被清除。 否则,不会对软引用将被清除的时间或者对不同对象的这种引用的集合的清除顺序进行限制。 但是,鼓励虚拟机实施偏向于清除最近创建或最近使用的软引用。
缺乏关于每个参考文献应用价值的信息会限制软参考文献的实用性。 过早清理的参考文献会导致不必要的工作; 那些被清除得太晚的人会浪费记忆。
大多数应用程序应该使用android.util.LruCache
而不是软引用。 LruCache有一个有效的驱逐策略,并允许用户调整分配的内存量。
Public constructors |
|
---|---|
SoftReference(T referent) 创建引用给定对象的新软参考。 |
|
SoftReference(T referent, ReferenceQueue<? super T> q) 创建一个新的引用给定对象的软引用,并向给定队列注册。 |
Public methods |
|
---|---|
T |
get() 返回此引用对象的参照物。 |
Inherited methods |
|
---|---|
From class java.lang.ref.Reference
|
|
From class java.lang.Object
|
SoftReference (T referent)
创建引用给定对象的新软参考。 新的参考没有注册任何队列。
Parameters | |
---|---|
referent |
T : object the new soft reference will refer to |
SoftReference (T referent, ReferenceQueue<? super T> q)
创建一个新的引用给定对象的软引用,并向给定队列注册。
Parameters | |
---|---|
referent |
T : object the new soft reference will refer to |
q |
ReferenceQueue : the queue with which the reference is to be registered, or null if registration is not required |
T get ()
返回此引用对象的参照物。 如果此引用对象已被程序或垃圾收集器清除,则此方法返回null
。
Returns | |
---|---|
T |
The object to which this reference refers, or null if this reference object has been cleared |