00:00
呃,基于呢,咱们刚才提到这个早期的垃圾回收的行为啊,咱们下边呢,就引入了叫Java的垃圾回收机制,呃,这个大家在大家呢,在接触这个Java语言的时候呢,应该都非常清晰的知道这个情况,对吧?那Java呢,我们说它的它呢叫做自动的内存的管理,那这里所谓的这个自动内存管理呢,就涉及到我们对象呢,呃,内存空间的一个自动分配,以及呢叫自动回收啊,实际上呢是两个行为啊,一个是分配,一个是回收,诶这个开发人员呢,就无需自己手动的参与了,这样呢,就降低了内存泄露和内存溢出的一个风险。啊,要是没有这个我们说相关的这个垃圾回收器的话呢,咱们这个Java呢,也会像这个c plus plus一样是吧,各种这个悬水指针一指针啊泄露问题呢,就比较多了啊那么好处是什么呢?就是大家呢,呃,因为我们有了这个自动的内存管理机制呢,啊,你呢就不需要啊这个过多的去关注于我们这个内存的一个申请和释放了啊你只需要呢,关注于你的一个业务开发就可以了啊这呢其实也算是这个我们说叫詹姆斯啊高斯林那一开始呢,在设计这个Java语言的时候呢,就在原有的这个C加加基础之上呢,我们做了一些简配,就不需要呢,你再不能叫简配了一些优化对吧?不需要呢,你自己再去关注一些,我们没有必要关注的一些事情了啊,这呢就做了一个减减。
01:18
啊,申请释放不用你管了啊,这呢其实是更好一些对吧?啊这个大家应该很清楚,就像刚才我们举例子说的说呢,这个你只需要呢去挣钱就行,呃,然后呢,我们专门给你配一个叫什么理财规划师啊,这个钱呢怎么管理,怎么去生钱啊怎么呢不贬值,这个呢,你不用去管了,你呢只关注于去挣钱就可以了,嗯,那么奥维官网呢,关于垃圾回收这块呢,有个介绍,诶大家有兴趣的话呢,也可以把这个网址呢,你输入到我们这个浏览器当中,你做一个这个查询。来看一下也行。哎,标准的关于我们这个GC这块的相关的这个内容这样子是吧,行,那那我们后边呢,也会想关于这个GC的话呢,我们如何去判别,呃,一个垃圾回收的,垃圾回收器的一个好或者坏啊就跟我们说一个算法呢,如何衡量好坏一样,诶我们都会有具体的一个标准行,接着我们看下边,那有了这个自动的内存管理以后呢,我们说非常好,那任何事物的话呢,我们说都有两方面,那有它的好的方面呢,就会有它不好的方面,那这呢就是我们表示的一些担忧。
02:17
哎,看下都有什么说,对于Java开发人员而言,自动的内存管理来说就像一个黑匣子,那如果过度的依赖于这个所谓的自动,那么也有可能将会是一场灾难,最严重的就是弱化Java开发人员在程序出现溢出的时候呢这个定位问题和解决问题的能力。大家能理解这个情况吗?那就好比是呢,你现在我们提到说,诶你只管挣钱就行,那如何呢,去理财呢,你不用管,我们有一个理理财规划师,但是你说呢,万一要这个理财规划师呢,突然有一天他辞职不干了,那怎么办呢?那你说你这个钱怎么管理呢?因为这时候呢,咱们已经不会去管理钱了,对吧?那或者换句话说,你说这哥们儿,他要是万一动点私心呢,去,呃贪污你这些钱怎么办呢?那一点招也没有对吧。哎,就是我们不能过度的去做一个依赖。
03:01
啊,那最近的话呢,是不是也有一个例子,是这个,呃,当当网的这个李国庆和这个呃媳妇儿余鱼是吧,俩人就开始呃开始撕啊这个呢,呃,具体细节啊,当然咱都不清楚啊是吧,那一开始的话,按照咱们讲的就是夫妻店嘛,两口子是吧,这个这个怎么着都行是吧?这个呢,可能没有过多的一些利益上的一些纷争,然后呢,这个相互之间的这个也没有过多的一些这个争斗,那后来的话呢,发现就不行了。啊,就是你过度的去依赖于,比如说这个李国庆作为创始人过度的依赖于媳妇了,结果最后发现他媳妇呢,把这公司呢,就给他拿过去了,他自己现在的股份呢,其实就比较小是吧?诶当然这里边这个问题呢很多啊,并不像咱们这块呢,类比这样的一个场景呢,这么简单啊,那么对于咱们Java成员来讲呢,其实我们说这个要担心的情况啊,你看我这样说一说,你看能不能理解哈,比如说我们不再使用这个垃圾啊,在Java当中咱们不再使用垃圾呢,这个垃圾回收系统是不是就在后台呢,默默的去工作,默默的去查找标识啊,释放这个对象,哎,比如说对呀,方法区啊,哎,这个直接内存啊等等,完全实现一个自动化管理。
04:09
啊,这是咱们目前的这种现状对吧,那那另外一个场景呢,就是这个Java语言呢,还不像咱们说的这个C或者C加语言,咱们在Java中也没有对应的,比如说像对应的这个像free函数啊,或者我们刚才看到的那个叫delete这样的操作呀,咱们也没办法去,呃去去让他去释放啊,这样的一些工作啊,呃这这样的一些这个功能,所以说呢,我们对于这个自动的内存管理呢,相对来说这个依赖度呢,还是比较高的。啊,比较高的。行,那么这个呃下边也提到说这个比较重要是吧?诶如何管理之后呢,我们再遇到这个OM的时候呢,呃,咱们需要什么呢?就快速的根据这个异常的它日志去定位这个问题和解决问题,就相当于呢,我们,呃你这块呢,有自动内存管理以后呢,我们会弱化自己的能力,但是呢,又需要呢,我们是不是要呃准确的能够定位这个异常的一些信息。那怎么办呀,这块我们说在配必要的一些监控和调节工具啊,或者叫调的工具。
05:06
啊,那就类似于说呢,你有一个理财规划师以后,那他这块呢,可能会出问题啊,不管是他这个,呃,身体的问题,还是说呢,他这个私心的问题,对吧,那我们呢,是不是再配一个这个监控的一个人就可以了,就像咱们国家管理一样啊一方面呢,我们有对应的这个国家的一些这个行政机关是吧,来进行管理,那同样的话呢,我们还配备相应的,比如说叫检察机关,就是监督呢,这一帮人呢,是不是能够正常的来去工作,那那自动的内存管理呢,呃,正常的去执行,那万一说呢,他要是咱们在管理过程当中有一些不善啊,他可能没有私心,当然呢,也会出现我们这个OMOM的问题,以后我们该如何去定位这些问题呢?就是虽然说叫自动的,但也不是说完整的什么都能给你解决,对吧,就像自动驾驶一样一样啊,自动驾驶呢,也分成好几个档次啊,好几个级别啊,完全的自动驾驶那可能是很很久以后才能会有的,那现在的话呢,就是说呃,大部分场景,比如在高速路上才能给你解决,但是万一要出一些突发事件的话呢,你还得需要自己呢,能够改成这个手动模式呢,去开车。
06:06
啊,那你要是完全依赖于自动驾驶的话呢,那你这块呢,可能遇到一些突发问题呢,你就搞不定了是吧,那这样,那所以呢,我们这块呢,就引入了相关的一些这个监控的一些啊工具啊和一些指令啊,大家呢,就得需要哎去熟悉这些监控的工具和指令。啊,在我们使用自动内存管理的情况下是吧?哎,去使用这些监控的工具和指令啊。那这呢就需要我们学习的,嗯,后边呢,咱们就会讲这个下篇的时候的内容啊,然后呢,JC呢,对于咱们来说呢,主要呢,关注的就是方法区和堆区,这个咱们前面已经讲过了,对吧?因为呢,只有在我们这个堆和方法区咱们才存在的这个垃圾回收啊,那这个垃圾呃方法区呢,主要指的就是我们呃呃源空间对吧?包括呢,我们所谓这个直接内存啊,也会考虑呢这个JC,那对于咱们前面的像这个站啊,本地方法站啊,程序计数器啊,他们本身是不是就没有这个JC行为啊。对吧,哎,本身就没有这个这些行为,那甚至说呢,对于我们讲的叫程序接收器,它根本连这个溢出问题都没有,对吧?像这个站和这个本地方法站的话呢,他们还是会出现staflow这样的异常,但是呢,它没有JC行为,而这个程序记入器的话呢,不管没有,不管没有JC,它连这个溢出的问题也没有啊,它就是记录一个我们操作服的一个指定地址,对吧?所以呢,它这个空间比较小啊,它也不会溢出,嗯。
07:25
行,这个呢大家清楚,然后呢,咱们在前面呢,也提到这样的点,那这个堆空间呢,是咱们垃圾回收的一个重点区域,那针对于方法区的话呢,咱们Java虚拟规范还提到过,说没有要求所有的Java虚拟机都得去回收方法区是吧?当时咱们不是还看过那个官方文档吗?啊,不多说了啊,那从这个嗯,JC的一个次数上来讲,咱们前面也说到过啊,频繁的收集这个新生贷啊,较少收集老年贷,基本不动永久带啊,或者我们叫方法区,这个呢,还写的叫pro pro space,哎,还是咱们这个旧的写法,那新的话呢,咱们现在是不是叫原空间啊。
08:04
OK啊,大家呢,清楚这样的清楚啊,这个结构就可以了。
我来说两句