00:00
好,那么刚才我们讲了网络缓存,也讲了本地缓存,接下来讲内存缓存了吧,对吧,那么在讲内存缓存之前呢,要跟大家略介绍一下Java之轮引用强引用去引用,因为啊以前。以前在做安卓的时候,因为我是从安卓1.5开始干的,那个时候啊,那时候安卓也刚起步是吧,很多东西了,它就是啊直接从的些。直接用Java的一些技术,那么Java里面呢,就有一些啊,引用引用引用为什么要用到这些呢?因为早期的图片的释放。早期的图片释放就用Java的这些啊,轮引用强引用的知识,然后把图片给释放,这样的话就不至于很占内存,因为当时啊,首先手机内存很小,然后软件的话也要加载图片,特别容易内存溢出,当时特别头疼。知道吧,那么但是当时又没有新的技术怎么办呢?那就用到Java的一些知识,那么这个时候就涉及到一个啊,一个这样的一个知识,就是什么呢?就是引用级别。
01:11
好应级别的话呢,但是我们现在不用了啊,不用等要告诉大家一下,因为有一些啊老的程序员是吧,他没干过安卓的,他就是干过Java,然后他会问你这些,所以你略知道一点啊。好,那引用级别是什么呢?跟大家说一下。一强引用,卵引用,乱引用,虚引用,那么强引用是什么呢?就是垃圾回收器,宁愿内存溢出也不也不会回收强硬的资源,什么情况呢?比如说你在历史预录中,在历史域中,我们六了一个集合,集合是装什么数据,那如果你一直往下滑,一直往下滑,我跟你说。这个它容易你能内存溢出,它也不会把集合的数据给回收掉。
02:02
注意啊,就是普通的集合啊,它就一直往下拉,一直往下拉,他也不会回收掉。啊,当然我们加上优化重复利用,那那是另外一回事,如果你不重复利用的话,它就会很容易崩掉,知道吧,那同学们,那也就是说这种强引用的话,就是你六。一个类,然后赋值给某一个啊字段,这样的话,这个字段对应的就是什么强没问题吧。那引用是什么?就是当内存不够的时候,可以回收裸引用的资源,注意谁来回收啊?垃圾什么回收器是吧,还有回收器。好,那也就是那回去就是我们的Java的回收机制吧,好,引用的时候也一样,当。内存不足够的时候可以回收啊,虚营的时候,当内存不足不够的时候,可以回收洛营,这个洛营的资源啊,这是虚营的资源啊,虚虚营的资源。
03:04
好,那么诶老师好像这些话都是一句话嘞,是不是注意虽然是可以回收,可以回收,但是回收顺序不一样。还有这个是卵引用,这个单词,这个是乱用,这个是虚引用,那回收它是有顺序的,先回收谁的虚的。再回收什么回收。啊好,那么这个引用强引用引用引用引用,注意它已经过时了啊,为什么过时,给大看一下。我们经常会使用一种非常流行的内存缓存技术,即卵引用论,用。那么现在已经不推荐使用方式了,因为从二这个啊这个开始,回收器会更倾向于回收持有这个裸引用啊,啊这个引用对象。
04:03
啊,也包我们的引了啊,外存无法用一种可预见的方式让你释放。那么也就说用原来的引用,引用呢,就过时了,就不不用了,好,那么这就会由潜在的风险成应用程序内存溢出,所以啊,看到相关文章还推荐使用啊,这个使用这个用和用的那就有点out了。那么既然在3.0它有新的方式,那么有有有新的方式替代吗?有就是LK,一会儿我们再讲,那么接下来我们继续看什么是什么是啊,什么是强引用啊,轮引用啊,这个引用引用虚引用,好这里面有一个文章。在我们这个第六资料里面有一个啊对象层次的引用,好我们打开,打开后我们给介绍一下,注意我不会详细介绍,因为这个地方呢,都过时了是吧,但你面试的时候肯定用得着。
05:14
好,注意这个啊,引用级别是从什么加加进来的。GDK1.2gD12,现在GDK多角多少啦,啊1.8对啊1.8,那么也就是说现在安卓7.0,它是支持JDK多少了,JDK8了是吧,但是现在一般用的是JDK7对吧。好,同学们,在这个1.2以前的版本中,当一个对象不被任何变量引用,那么程序就无法使用这个对象。也就是说,只有对象处于可状态,程序才能使用它。这就相当于日常生活中一样,从商店买某种商品,如果有用,就一直保留它,否则就把它扔到垃圾桶,由清清洁工收走。一般来说,如果物品已经被扔到垃圾桶,再想把它捡回来就不可能了。
06:10
对吧?如果一个垃圾桶有你小孩的大便尿要是吧?那你扔垃圾桶你还会捡回来吗?打死都不捡了,你会再花钱买一份是吧?是不是?是这哥们是小时候剪过是吧?啊,开玩笑啊,我去继续看啊,别别别别笑啊,我们继续啊。有时候情况并不那么简单,你可以会遇到像鸡肋是鸡肋吧一样的物品,食之无味,弃之可惜。这种物品呢,现在已经无用了,保留它会产空间,立即扔掉呢,又不划算,因为也许将来有一天会派上用场。假如你特别懒是吧?不想出去买东西,极乐反正也吃了是吧?这种情况是有时候也也有是吧?对于这样可有可无的物品,一种责中处理就是。
07:04
如果家里空间足够,就先把它保存在家里,如果家里空间不够,及时把家里所有的垃圾清除,所以垃圾肯定是没用的是吧,还是无法容忍那些。这个必不可少的石头物品,那么再扔掉这些可有可无的物品。明白吧,所以他就有一个优先级,就是说我先要保证必须要用的物品可以装,然后还有一点空间,我在保留这些可有可无的是不是好,那么从1.2开始,那么把对象分四个引级别,从而使程序更加灵活的控制对象的生命周期。注意对象的创建要占内存是吧?销毁是释放内存的。如果一直占着空间,是不是我们迟早会崩掉啊,对不对,所以的话呢,就要用到这级别,好我们看一下引用平时我们编程的时候啊,当然这里有个图啊。
08:06
这样的一个结构。是吧?强引用是吧,乱用。啊,去用。啊,这是这是引用错了,引用啊引用引用好,那时我们编的时候这样,比如说我们一个是也是一个强饮用啊,好,那么而且对手是一个强饮用,如果一个对象具有强饮用,那么类似于必不可少的生活用,比说你每天的。是必不可少的是吧?那么垃圾回收是绝不会回收是吧?所以人们就说在逃难的时候,你就是黄金重要还是面包重要?对呀,是不是必不可少的生活物品是不是,所以的话啊,面包比黄金重要是吧?乱世中吃的比黄金重要,当内存不足,Java虚洗机里面抛出内存溢出,这是注意啊,这是内存溢输吧啊,那此存器啊,这个异常终止也不会靠随意回收具有强硬的对象来解决内存中的不足,生活的就生活的东西。
09:28
是遇这个一就十多天,那又没有吃的,怎么办呢,吃自己。吃自己的吃自己的东西是吧?好,你们你们懂的啊,好,如果一个对象具有软引用,那么类似于可有可无的生活物品,如果内存空间足够,垃圾回收器呢,就不会回收,如果内存空间不足,就会回收这些对象。
10:04
啊,回收这些对象内存,只要垃圾回收器没有回收,该对象就可以被程序使用。啊,这个引用可以实现内存的一个敏感的缓存啊,裸引用可以和一个引用联使用,知道吧?啊,同样引用也类似啊,用的话呢,具有用对象就类似于可有无的生物品,用和用的区别在于只具有啊,只具有引用的对象拥有更短的什么生命周期,这是它区别。一样的啊,一样的这些都一样的,虚荣的话呢,就是它就更弱一些啊,更弱一些啊,然后下面就是案例啊,你感兴趣可以看一看,这就一些大家好学啊,这个Java子啊卵引用啊强引用啊,这个论引用虚引用的一个介绍,好把视频呢保存一下。
我来说两句