Android缓存中的四种类型
来源:互联网 发布:淘宝卖家不能上传宝贝 编辑:程序博客网 时间:2024/06/03 18:25
a.强引用
---什么是强引用?
在某个函数中创建了一个对象,那该对象存储在堆空间,能过这个对象的引用才能对这个对象进行操作(实例化对象的变量)
实例化的变量是分配在栈空间中,这就是强引用
---强引用的特点?
- 直接访问目录对象
- 强引用所指向的对象在任何时候都不会被系统回收,jvm宁愿抛出oom异常,也不会回收强引用所指向的对象
- 强引用可能会导致内存泄露
b.软引用
---什么是软引用?
软引用是除强引用外,最强的引用类型,可以通过java.lang.ref.SoftReference使用软引用。(SoftReference<drawable>)一个持有软引用的对象,不会被jvm很快回收,jvm会根据当时堆的使用情况来判断何时回收,当堆的使用率达到阈值时,才会回收软引用的对象
//创建一个软引用
SoftReference<Drawable> drawables=new SoftReference<Drawable>(一个drawable对象实例)
//进行不为空判断
if(drawables!=null){
//使用drawables.get()方法来得到软引用对象值
//如果内存吃紧时,drawables.get()的返回值将为null,图片不会显示
view.setBackGroundDrawable(drawables.get());
}
---使用软引用的好处?
(场景在加载大量网络图片时)在系统内存较紧张时,软引用会被回收。这样最坏的结果是图片显示不出来,但系统不会因内存不足(内存溢出OutOfMemory),而导致app崩溃。
c.弱引用
---什么是弱引用?
弱引用是一种比软引用还弱的引用类型,在系统GC时,只要发现弱引用,不管系统堆空间是否足够,都会将对象进行回收。但是由于接收回收器的线程通常优先级很低。因此,并不一定能很快的发现持有弱引用的对象。这种情况下,弱引用对象可以存在较长一段时间。
//创建
WeakReference<?> mview=new WeakReference<?>()
//调用
mview.get()
d.虚引用
虚引用是所有引用类型中最弱的一个。一个持有虚引用 的对象,和没有引用几乎是一样的,随时都可能被垃圾回收器回收。
实际几乎没用
缓存类型的比较
软引用和弱引用都非常适合来保存那些可有可无的缓存数据。如果这样做,当系统内存不足时,这些缓存数据会被回收,不会导致内存溢出。而当内存资源充足时,这些缓存数据又可以存在相当长的时间
参考:http://blog.csdn.net/lzn51/article/details/52669783
阅读全文
0 0
- Android缓存中的四种类型
- Android缓存中的四种类型
- Android缓存中的四种类型
- android中的四种缓存
- C++中的四种类型转换
- C++中的四种类型转换
- C++中的四种类型强制转换
- C++中的四种类型转换
- 浅谈C++中的四种类型转换
- c++中的四种类型转换
- c++中的四种类型转化详解
- 编译原理中的四种类型文法
- C++中的四种类型转换
- C++中的四种类型转换
- C++ 中的四种类型转换
- C++中的四种类型转化
- android中anumation的四种类型
- Android animation的四种类型
- 背包
- webpack学习
- C++ 循环
- oracle开启附加(补充)日志
- python 直接用账号密码cookie登陆人人网获取页面
- Android缓存中的四种类型
- 【智能零售】基本粒子路驰:新零售的核心是基于数字化的连接
- SQL 函数 详解
- bootstrap两层模态框无法滚动问题
- 一个工具类小demo
- 【IOS学习之常见问题】 关于IOS证书的那点折腾事4-App转让
- 【区块链】【IOT】深度解读物联网区块链“IOTA”:不仅解决IoT痛点,还解决区块链痛点
- 近日关于Java反射的学习
- AOP的底层实现-CGLIB动态代理和JDK动态代理