00:00
好,各位同学,接下来继续,若引用wake reference,那么也就是跟我们的local相关的了,OK,好,那么下面请问一下什么叫弱引用呢?要给大家讲解一下。来。它呢,用这个weak reference类来实现,它比soft软引用的生存周期更短。那么。对于只有弱引用对象来说,只要EGC,不管Java虚拟机的内存空间是否足够。都会被收掉,OK,也就是说无差别回收,只要你是个胃口,只要1GC马上就拿掉,那么从这我们会明白,如果我们local,它本身这个N,它这个key,你看啊,是weak reference包装了一个local,那么只要我一干掉。这个local那是不是要马上要被回收,因为它是一个什么weak reference啊,不管你内存够不够用,OK好了,那接下来呢,那么同学们我们来了。
01:00
理由明白了以后,我们这儿呢,啊呃,比如说先回复到我们的内存配置,那么在这儿。去掉绝对什么都够OK,那么现在又恢复我几个G的那样的一个内存,那么现在不存在说内存不够用,那么好了,那么下面我们的weak reference,你呢?也依旧是my object reference等于六。Wake reference,那么来吧,那么这就是new my object,弟兄们,OK,那么好,同学们,现在system在这,那么就是GC。之前,那么这个时候肯定是内存够用对吧,那么也就都都不用说内存的事儿了,既然这么写了也无所谓啊,其实现在内存肯定100%够用,那么get弟兄们没问题吧?好,那么直接来了,一气呵成system点。GC,好了,和之前一样,也就是一秒钟以后,那么接下来。没有把它吃为难,像强引用那样就溜了这么一个。
02:03
若引用的对象1GC之后。下面我们再来看看这个时候。写的很明确了啊,内存够用,内存够用,GC前GC后来同学们我们一起执行一下。好,那么也记,只要有任何风吹草动,马上大家请看,内存够用的时候会打出这个OKGC之前没问题吧,但是呢,只要是1GC了之后,我不管你内存够不够用,就算够用它也被干掉了,是个那OK好那么同学们这个呢,就是我们的什么wake reference弱引用好那么前面的soft软引用,这的wake弱引用的有没有什么适用场景呢?很多,尤其是高速缓存和图片处理来。假如有一个应用需要读取大量的本地图片啊。比如说我们的微信上,你们的对话窗口都会发一些这个图片啊,抓个图截个图发过去,如果每次读取图片都要从硬盘读取,则会严重影响性能,如果一次性全部加载内存,有可能造成内存溢出,所以我们有时候呢,要用软引用来做这个设计,它的思路是这样的啊。
03:14
我们来保存图片在手机上的图片路径和相应图片对象关联的软引用来做个映射关系。内存足够好说,内存不足就让Java虚拟机自动回收这些缓存图片对象所占的空间,有效的避免OM,那么来同学们,比如说这个就是我手机上某个这个文件夹的地址,这我就软用了一个bit map位图的这样一个东西嘛,够的时候那么哎,就不跟你计较,OK,它不够的时候可能就会回收,那么软饮用或者是弱饮用,假设这是soft,那么假设你要用wake,那就没什么好说这些图片。只要一引起了GC回收,不管够不够用都要被干掉,OK,那是弱引用未可,但是soft这样的话呢,那么就是内存够,我呢直接呢就放你一码,内存不够,我要把你干掉,所以说有时候呢,就是你一清理手机时就会看到这样的情况,哎,怎么我做了一次大清理了以后,以前那些图片点一下就可以马上看到,但是现在为什么要重新下载一次,重新生成呢?那就是什么它为了避免OM,做了一下内存优化,把这些大的图片给干掉了,OK,好,所以说软和弱在高速缓存图片处理上,就看你的内存的这个适用程度。
04:30
软饮用够用,不跟你计较,不够用,回收,若饮用,只要有GC,不管是否够用,立刻回收好。这个就是我们的弱引用。
我来说两句