类 SoftReference<T>
java.lang.Object
java.lang.ref.Reference<T>
java.lang.ref.SoftReference<T>
public class SoftReference<T>
extends Reference<T>
软引用对象,在响应内存需要时,由垃圾回收器决定是否清除此对象。软引用对象最常用于实现内存敏感的缓存。
假定垃圾回收器确定在某一时间点某个对象是软可到达对象。这时,它可以选择自动清除针对该对象的所有软引用,以及通过强引用链,从其可以到达该对象的针对任何其他软可到达对象的所有软引用。在同一时间或晚些时候,它会将那些已经向引用队列注册的新清除的软引用加入队列。
软可到达对象的所有软引用都要保证在虚拟机抛出 OutOfMemoryError
之前已经被清除。否则,清除软引用的时间或者清除不同对象的一组此类引用的顺序将不受任何约束。然而,虚拟机实现不鼓励清除最近访问或使用过的软引用。
此类的直接实例可用于实现简单缓存;该类或其派生的子类还可用于更大型的数据结构,以实现更复杂的缓存。只要软引用的指示对象是强可到达对象,即正在实际使用的对象,就不会清除软引用。例如,通过保持最近使用的项的强指示对象,并由垃圾回收器决定是否放弃剩余的项,复杂的缓存可以防止放弃最近使用的项。
方法摘要
T |
get()
返回此引用对象的指示对象。 |
从类 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
。
分享到:
相关推荐
this.cacheMap = new HashMap<String, SoftReference<Bitmap>>(); } public Bitmap loadCacheImage(String imagePath){ Bitmap bitmap = null; if (cacheMap.containsKey(imagePath)) { bitmap = ...
两个例子: (1)GridView+异步请求图片 (2)ListView+异步请求图片 用HashMap<String , SoftReference<Drawable>> 来存储缓存图片,以便再次加载
SoftReference、WeakReference和PhantomRefrence分析和比较
StrongReference,SoftReference, WeakReference的使用实例,请参照博客:http://blog.csdn.net/To_be_Designer/article/details/72673421
软引用SoftReference1
通过软引用SoftReference缓存图片及实现图片的异步加载
网上关于这个方面的文章也不少,基本的思路是线程...先放上内存缓存类的代码MemoryCache.java: 代码如下: <SPAN xss=removed><STRONG>public class MemoryCache { private static final String TAG = “MemoryCache”;
本文实例讲述了Android基于SoftReference缓存图片的方法。分享给大家供大家参考,具体如下: Java中的SoftReference即对象的软引用。如果一个对象具有软引用,内存空间足够,垃圾回收器就不会回收它;如果内存空间...
本文实例讲述了Android实现从缓存中读取图片与异步加载功能类。分享给大家供大家参考,具体如下: ... private HashMap<String>> imageCache; public AsyncImageLoader() { imageCache = new HashMap<String, S
3.1 强引 3.2 软引 3.3 弱引 3. 4 假象引
解决android OOM的SoftReference
在下载文件或者在线浏览文件时,或者为了保证文件下载的正确性,需要使用缓存机制,常使用SoftReference来实现。 SoftReference的特点是它的一个实例保存对一个Java对象的软引用,该软引用的存在不妨碍垃圾收集线程...
ListView异步加载网络图片,SoftReference,有重复的Url直接返回资源
1. 用MemoryCache缓存图片信息,采用SoftReference方式避免OOM。 2. 将getView中需要加载的图片添加进堆栈,启动异步线程从栈顶开始加载图片,保证当前显示区域的图片被先显示。 3. 调整Load线程优先级为Thread.NORM...
内存-文件-网络 三层cache机制,其中内存缓存包括强引用缓存和软引用缓存(SoftReference),其实网络不算cache,这里姑且也把它划到缓存的层次结构中。当根据url向网络拉取图片的时候,先从内存中找,如果内存中...
Android的内存管理-SoftReference的使用、Android垃圾回收实质内容解析、如何避免Android内存泄露等
图片加载一次之后,便会在保存在SoftReference和DiskLruCache中。当程序再次加载该图片,会先获取SoftReference里面的bitmap,如果没有获取到则去DiskLruCache中获取。加载大量图片时,可以有效防止OOM,同时提高了...
所以开始做应用的时候并没有考虑这些,所以后来痛苦了好久,现在和大家分享一些关于让你的程序稳定程度加一成保障的做法,那就是在程序中SoftReference的使用,可能大家并没有确切的去做过这个软引用的实际使用与不...