三级缓存之弱引用概念

来源:互联网 发布:麦迪62分数据 编辑:程序博客网 时间:2024/05/16 18:29

 强引用是用等号来表示,系统不会因为内存不够而对强引用进行回收;

 软引用可以形象成一个用来装对象的袋子,而这个袋子里的东西在oom之前会被清空;

 弱引用和软引用概念一样,只是袋子里的东西是在系统调用GC的时候清空;

 虚引用的袋子基本为空,只是可以起到一个回收资源的作用,我自己感觉

 安卓2.3.x 之后,软引用也就成了弱引用,google推荐是LruCache


* 强可及引用  = 

 * Object o = new Object();
 * 
 * 弱可及引用 袋子 不是android中特有的,是java中的
 * Object o --》 袋子中 --》 通过袋子拿
 * 1 软引用
 *  软引用 s = new 软引用(new Object())
 *  Object o = s.get()
 *   o == null ; //false
 * ....  // 当java虚拟机中有太多对象了,内存不够用了
 *  Object o = s.get()
 *   o == null ; //true
 *   
 * 2 弱引用
  *  弱引用 w = new 弱引用(new Object())
 *  Object o = w.get()
 *   o == null ; //false
 *  System.gc();  // System.gc()此方法不一定会导致垃圾回收器执行
 *  Object o = w.get()
 *   o == null ; //true
 * 3 虚引用
 * 虚引用 x = new 虚引用(new Object())
 *  Object o = x.get()
 *   o == null ; //true
 *   
 *   google在安卓2.3.x 之后修改了软引用的机制,它和弱引用 一样,因为google不推荐这样搞
 *   google推荐是LruCache 就是一个map集合,可以自动删除对象,在构造的时候会指定尺寸,超出尺寸的会删除
阅读全文
0 0
原创粉丝点击