00:00
后来呢,我们来说一个这个概念性东西啊,这东西就是纯概念的了啊,我们来说一个什么呢?说一个这个零六叫做一个这个垃圾回收啊,垃圾回收或者叫做垃圾收集啊,叫做一个什么呢?垃圾回收,那我们叫做一个这个英文叫做一个GC啊,简写叫做该壁纸collection啊或者collection啊GC叫做垃圾回收,那什么叫垃圾回收啊,那么就跟什么呀,我们班上都有一个这个。垃圾桶是吧,咱们有什么垃圾呢?是不是都往这个垃圾桶里扔啊,然后定期的话,我们这个垃圾就得干嘛了,是不是统一给它扔了清理掉了对吧?那同样我们一个这个人,我们一个班级生活的时间长了,它会产生一些什么呀,生活的垃圾,那同样我们一个程序运行时间长了干嘛呀。是它会不会产生垃圾啊,诶也会产生垃圾啊,也会产生垃圾,一定注意啊,我们这个程序跟我们生活是什么呀,是一样的啊是一样的,所以你这个编程学学通了的话,你就成一什么了,一个大的这个哲学家了,是吧,大哲学家了,那所以这里边我们既然要说的,我说什么呢?我们说我们这个就像什么呀,就像我们这个人的人生活的这个,哎时间哎长了,为什么呢,会产生这个垃圾一样,我们的什么呢?我们程序运行过程中也会什么呢?也会产生一些什么呀,产生垃圾啊,也会产生垃圾,那我们说像这种垃圾多了以后,那我们说这一些圾积攒哎过多以后,那会有什么问题,假设咱们把这垃圾了呀,堆满了,后边过道都堆满了,那怎么办呢?我们是过不去了。
01:54
哎,我们人就过不去了,那程序可能干嘛了,程序可能运行速度就干嘛了,过慢啊,为什么呢?呃,会导致我们这个程序运行的这个什么呀,速度过慢啊,速度过慢,所以什么呢?所以我们需要什么呢?我们需要一个这个垃圾回收的一个机制来干嘛呢?诶来处理我们这个程序运行过程中干嘛的呢?诶产生的这个垃圾啊,这个东西是必备的,每个程序里边都得有这个东西,没有这个东西你程序运用时间长了就就废了啊,就废了,那现在我们先不管他是怎么收的,我们先来看什么呀,到底什么是垃圾啊,到底什么是垃圾,你得先搞清楚什么是垃圾,你是不是还要说回收它呀?诶来,我们先来创建一个对象,挖一个obj,等于一个new,一个object,我这是不是创建了一个新的对象啊,哎,新的对象,那这个对象呢,我们来拿这个什么呀,图来体验出一下啊,来体验一下画个图。
02:52
CTRLC把这个呢,复制一份垃圾回收呢,首先我把这个代码给它粘过来,直接CTRLC,我们这儿呢,给它插入这么一个这个形状。
03:03
诶,我们来了一个Y,一个OB接,等于一个new的一个object y AB接在我们站内存里是不是创建一个变量叫OB接呀,然后在堆应内存里我们创建一开辟一个空间,是不是来保存我们这个对象啊,这个对象是我们这个object,那这块呢,它只有一个这个内存壁址0X123假设然后呢,OB接指向的是什么呀?0X123,诶那他们现在干嘛呢?相对相当于在我们OB接里边有一个指针指向的是我们这个什么呀?诶内存对内存里边这个对象这个关系能明白对吧?好,那接下来我们来看一个什么问题呢呀,诶那现在我创建完了个对象,那我是不是在这下边我要对什么呀?对这个对象进行什么呀?对对象哎进行各种操作我就干嘛了,我就给它呀,省略掉了啊,省略掉了就不说了,然后呢,在这看我做这么一个事来一什么呢?Obj等于一个no OB等于no,那这什么效果呀。
04:06
Obj等于now,我干嘛了,我是不是将变量obj的值设置为了什么呀?哎,设置为了呢now啊now现在问你,现在我OB接这个变量还指没指向对内存里边这个对象没有了,那就什么他们之间这个连接干嘛了呢?断开了。断开了以后,你注意了,我这个0X123这个对象,它还有没有任何变量对它进行引用了,没有了吧?哎,没有了,他已经断开了,那换句话说,这个对象我们还能不能用,用不了了吧,就像什么呀,就像你放风筝一样,风筝线咔一短了,一减了,这风筝家够不着,够不着了是不够不着了呀,同样现在我们什么呢?没有任何变量,没有任何属性去保存这个对象的引用,这个对象我们是不是就不能再去操作了,哎,不能再去操作了,那这个对象我们称为什么呀?
05:02
垃圾啊,这个对象就是垃圾,所以什么叫垃圾,当什么呢?当一个对象,当一个对象没有什么呢,没有任何的变量或什么呢,或属性,对它什么呢?对它进行引用,那此时呢,我们将永远哎无法哎操作该对象,哎这对象就丢了,说白了就丢了,那此时呢,哎此时这种对象就是什么呢?诶就是一个什么呀,诶就是一个这个垃圾啊垃圾,那我们说了,咱们现在来看,虽然它现在断开连接了,但是它是不是还是在我们这个内存里边存在啊,那我们想想,这种对象多了以后,可能我有成百上千这个对象我有成百上千个,多了以后他们都是没用的,你想用你也用不了,因为你获取不到了,占着它干嘛呀,是不是还占量,占用我这个大量的这个内存空间呀,哎,内存空间啊,所以注意这种对象干嘛呢。
06:02
哎,这种对象,哎过多会什么呢?诶会占用我们这什么呀,大量的这个什么呀,内存空间导致什么呢?导致我们这个程序运行什么呀,诶变慢啊,导致我们这个程序运行波变摸按慢哎变慢哎有的时候如果你过多了,可能干嘛了,内存一出,我程序可能就要死了啊,可就死了,所以呢,这种垃圾我们必须干嘛呀,进行一个清理,诶我们必须进行清理,那问题来了,我们怎么去清理啊,怎么清理啊,咱们能不能清理先想想。我这我这我这链接是不是已经断了,已经说了,这东西我已经找不着它了,哎,我已经找着它了,所以咱们就没有办法什么了清理了,那谁来呢?来我们来说一下,在我们这个GS中,或者现在的新的语言中啊,在我们这个GS中什么呢?诶拥有叫做什么呀,自动的这个垃圾,哎回收机制啊,有自动的垃圾回收机制,它为什么呢,会自动。
07:12
诶自动将这些什么呀,垃圾对象从我们什么呢?从我们这个内存中什么呀,内存中销毁啊,会自动将这些垃圾对象从我们这个内存销毁,我们我们呢,我们不需要干嘛呢?我们不需要也不能进行自动的什么呀,我们不需要也不能进行这种自进行这种哎垃圾回收的这个操作,换句话说,这些垃圾回收都是由谁完成的呀?诶都由我们这个什么呀,浏览器诶由我们这个GS这个引擎来完成的啊,我们不需要自动的去,我们不需要去回收这个东西啊,不需要去手动去回收这个东西啊,不需要手动回收,那这玩意儿是不是很方便呀?诶至于他怎么回收的。或者说他什么时候回收的,甚至说他回没回收,实际上这个事儿我们都干嘛呀,都不操心,让浏览器自己去处理,而且不同浏览器它处理的方式干呀,他也不一样啊,它也不一样,但是问题来了,它虽然会自动回收,那怎么说了,假设我这种情况,我这有一个OB间一个对象,对吧,这个对象用完了,我以后再也没有任何用处了,但是呢,我不写这行代码,那我问你这个对象它会不会回收。
08:26
不会回收,为什么?因为是不是还有变量对它进行引用的呀,也就是说什么呢?浏览器它不能判断这个对象对你来说到底什么呀,到底有没有用了,所以它此时是不会回收的,那我们需要干嘛呀?如果你需要回收干嘛呢?是不是obj等于那啊,诶这时候浏览器一看,哦,这哥们没用了,干嘛了,等到一定时间就给你收走了,就像什么呀,我们这个我们要把我们的垃圾扔到这个垃圾桶里,然后我们这个呃,清洁人员是不是把这个垃圾就自动给收走了呀,哎就给收走了啊同样,所以这块注意我们需要做的只什么呢?我们需要做的只是要干嘛呢?将我们这些不再哎使用的这个对象设置为no即可啊,设置为闹即可啊所以这个呢,我们就说到这儿啊来停一下。
我来说两句