00:00
好,那同学们,我们继续那上一讲给大家介绍了什么是弱引用,那现在这三个大致呢,都过了一下。强饮药就是我们以前默认经常用的。那么自然而然,同学们会引出一个问题。那这个是什么?样的场景,什么样的情况下,软引用弱引用到底有什么好的地方,我为什么要学,那现在呢,大致呢,明白了一下。无非就是说收不收的问题,垃圾回收以后,那哪些场景案例适合呢?我们举一个这么一个需求哈。假如说现在。我们呢,要。读取大量的图片。好,我们假设是一个缓存系统,那我们都明白哈。如果这个图片我每次都要去。读取,那同学们你们懂的,系统性能下降,而且读图片这种事只能说第一次读的慢。
01:02
第二次以后都必须快,为什么咱们大家是不是都要把它加载进缓存里面。但是呢,由于它是图片又碎,一般图片呢都比文字呢要大,那么如果说你不加载到内存里面吧,图片呢。出的慢,影响性能,但是你加载到内存里面吧,图片又大,慢慢的就把这个内存空间给占满,弹实了又容易把OM,那么怎么办呢?那么这种情况下,那么。同学们,我们漏。刚才讲过。每次都要读,性能下降。全部加载到内存当中,有可能造成内存溢出,那么我们就可以用软引用或者是弱引用解决这个问题,用软引用是不是够用的话,咱们不跟你计较,不够用了,咱们呢就把缓存给清掉,然后把那一部分的内存腾出来给我们的。
02:01
应用程序,那么这样是不是降低了发生OM的概率?那么这个时候我们就可以用这么一种设计思路。我们让哈希map来保存图片和相应图片关联的软引用之间的映射关系,当然这也可以用弱引用哈,内存不足的时候,Gbm会自动回收这些缓存。图片所占的对象,那么这是用软引用,你要用弱引用,那么只要GC通通释放,那么更加降低了什么OM的概率,那么说白了都是为了降低OM的概率,避免OM,那么我们可以这么干。前面。我们呢,大家呢,都干过这个事儿,现在是两个对象,那么它也是一个对象吧,是不是可以转到我们的哈,Map里面我们讲过缓存其士底子是不是就是哈,Map那么好,我干嘛呢?Key。Value建支队,那么bit APP我们在新版的red里面讲过,这是一种位图索引啊,那么这是位图哈,那么这个也是个新的特性,那么言下之意,比方说这个是key好说,那么这个value它可以装在一个软引用或弱引用里面,那么这个情这样的情况下而言的话呢,我们够的时候,内存够的时候我们用。
03:12
我们的缓存加内存。内存不够要GC了,我们就把缓存占的那部分示范加给内存,从而避免OM,那么所以说这个东东你要是呃得空的同学我讲过啊,第二次再说。嗯,以后有兴趣钻研源码了,看看美白提缓存的那一块,大面积的使用的软饮用和。那么这个呢,就是一个思路。别,到时候呢,只是知其然,不知所以然。那么这个时候面试官会问你好,你这个概念你知道钱软弱,那么他们用在哪儿啊?你举个例子,那么这个时候可以看一下干嘛加载大量图片,比方说安卓手机或者前端的IE浏览器啊,京东那些网站前端都要加载大量的图片,那么每次都要读。
04:00
性能不好,因为每次这样读图片很慢的,性能就下降,只能是加在缓存里面,那你都加在缓存里面,你这个缓存也不能说无限大吧,那么这个时候干嘛又可能导致内存被你耗光了。OM,我们。既又又要,既想这样又想那样,什么都要兼得,那么这个时候我们的折中的软引用或者弱引用就可以给我们来进行收割,那么自然而然。又会引入到下一个话题,如果你知道软引用的话,有没有用过week哈。只要这道题他问了你,试用场景自然而然会追到你问week,哈希map。那么同学们应该用过哈map,看current map,那么到这儿现在又会流行问week哈map。呢,我们下一讲再给大家呢进行相应的介绍,那么。大家呢,干嘛呢,跟着我学。
我来说两句