Android缓存中的四种类型
来源:互联网 发布:ubuntu 16.04怎么分区 编辑:程序博客网 时间:2024/06/06 05:03
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的四种类型
- python用matplotlib画图例子(2)
- [NLP]如何打造一个Chatbot
- MySQL链接服务器权限配置
- 2017.10.14C++ 基础小练习
- 5.构造器
- Android缓存中的四种类型
- PHPStorm解决Failed to change timestamp of the file
- Unity2017.1.0f3 问题记录(动态修改ParticleSystem中的相关参数)
- iOS copy使用
- sdnu1017
- CCF-20170901-打酱油(100分)
- 矩阵的行列sum() Python
- java多线程-生产者消费者
- DrawLayout的使用