00:00
大家好,我是上微谷的讲师宋洪康,那从今天开始呢,我们就开始来讲解一门新的技术哈,叫做GVM,那GVM呢,对所有做过Java开发的人员来讲,当然呢也不止Java开发程序员了,呃,很多其他的语言呢,跟我们GM呢也是有关系的啊,这个我们在讲解过程当中也会说到,那今天呢,我们来讲解这个GM这门技术,呃,这个课程的话呢,主要涉及到哪些内容,我们首先呢给大家说明一下,呃,打开以后的话,关于GM呢,我们整体上是分成了四个篇章啊四个篇章呃,第一个篇章呢,我们叫内存与垃圾回收篇,第二章呢叫做字节码与类的加载篇,然后第三个呢叫性能监控与条篇,其实呢,关于GM的话呢,我们分成这样三个篇章呢,就基本上能够把GM的课程内容呢,就讲解完整了,呃,大家呢,在开发当中,呃,不管是直接或间接用到GM的话呢,你可以去网上第一个想到就是买一些相关的书,对吧?那如果你买相关的书的话呢。
01:00
呃,一般的话都会涉及到呃,具体的这里边儿的某些方面啊,像内存与垃圾回收呢,这应该算是比较基本的这个内容了啊,通常呢,上来都会先讲这部分的这个内容,那通常的话呢,像书里边会包含这个第一个篇章和第二个篇章的内容,当然也有专门的书呢,是来侧重于第三个篇章的啊,也有专门侧重于第二个篇章的内容,呃,不过整体来看呢,国内目前可以参照的GVM的书籍呢,其实不多啊,那视频的话呢,其实大家在网上搜索的话呢,也比较有限,呃,我也看过相应的一些书,呃,包括一些视频呢,也都接触过,但整体上来讲的话呢,还不是足够的通俗易懂,所以呢,我们今天呢,录录录制今天这一套视频,呃,便于大家呢更好的去来学习GM,那第四个篇章呢,我们在呃讲一讲关于大厂面试方面,关于GM这一块呢,都有哪些具体的问题,那整个的话呢,应该算是内容比较完整了,那大家看到的这套视频呢,只是我们针对于这个内存和垃圾回收展开。
02:00
来讲解的,那打开以后的话呢,我们这里边有五部分内容啊,课件软件啊,课件的话呢,就是整个打开,就是我们要讲解的这些章节啊,一会儿呢,我们会具体来说,然后软件的话呢,就是我们在讲解这个内存和垃圾回收片当中涉及到的一些软件的安装,比如说呢,不同版本的JDK,那我们讲解的版本呢,主要是针对于JAVA8,因为目前呢,在企业当企业级当中用JAVA8呢是比例最高的,那除了JAVA8之外呢,现在像七六啊,当然六肯定是在公司当中用的,是六以后的了,对吧,那七六也有一定的比例,那我们看到九之后,呃,八之后啊,一直到目前比较新的呢,是JDK13了,那因为Oracle后期更新的版本迭代速度非常快啊,八之后的话呢,11是一个LTS,就是一个长期支持的版本,也就是说呢,大家在企业当中,如果你装的不是JAVA8的话呢,未来要装的话啊,未来要装的话呢,那你就是安装JAVA11就可以了。
03:00
那包括我们整套课程内容,在讲解过程当中,是基于把。啊,就是在八的环境下,我们来跑绝大部分的程序,那后面的话,在90 11 12乃至于13当中,关于一些新的特性,在GM这方面呢,我们也会讲解到,所以这呢,我是放了几个主要的JDK的版本,当然大家也可以去官网下载,那以及呢,我们想读懂自解码文件呢,用的g class lab,还有呢,我们在当中用的一个MAT这样的一个工具啊,还有一个另外的也是自解码的一个读取的一个软件啊,这个大家呢,在网上去先下载也是OK的,那资料呢,这块我放了一些官网可以下载到的GVM规范啊,GVM规范大家也可以去官网来下载,那另外呢,关于GM方面的一些书籍呢,大家也可以去网上呢,呃,去买一些正版的书籍来看啊,当然也有一些电子书啊,方便大家去阅读,那代码的话呢,在整个我们讲解内存和垃圾回收片呢,会涉及到呃代码,那代码的话呢,我们回头会放在这个目录下,那视频的话呢,就会放在这个目录下,这是整个这样的一个结构,那课件。
04:06
打开以后大家会看到呢,关于内存和垃圾回收呢,我一共列了有16章啊,嗯,应该这么讲哈,就是被这个课程内容呢,确实是花了一些时间,因为呢,我希望呢能够推出一套呢,呃,任何一个Java程序员,不管你是嗯刚学完Java语言本身还是呢,已经是从事过几年开发了,都希望呢能够有一个系统的对GM有一个完整的理解啊,以及呢也有一些深入的内容呢,这个。方面的一个提升,所以呢,这块呢,大家会看到我把这个章节内容分的比较详细,那在网上的话呢,不管是书也好,视频也好,还有帖子也好,嗯,当然呢,书的话呢,应该是我们认为准确率最高的,对吧?那帖子话呢,其实是准确率比较差的,嗯,我也看过很多的帖子哈,发现在GM这方面呢,其实很多人都有点信口开河,嗯,这个乱说,那希望呢,能够借助于这条视频,以及呢,这个视频所对应的这个课件呢,我们有一个非常系统的一个梳理,嗯,我希望这条视频呢,既能达到呃比较内容详尽细致,就不会有一些遗漏点,这个方方面面都能介绍到,另外呢,一个基本标准是要准确啊,那在此基础之上呢,希望能够以更通俗易懂的语言呢,给大家把GM的一个全貌呢,做一个讲解啊,希望对女GM这块能力的提升呢,有一。
05:37
个呃,大的帮助,那打开以后的话呢,我们简单说一下这几个章节啊,那第一部分的话呢,就是关于GM的一些概述了,对吧,我们讲解任一个任何一个新的技术呢,一开始都是有一个呃,这个感性上的一个理解啊,这是一个引入的过程,然后呢,我们从几个方面来了解GM,那如果大家你看过一张图的话,这个图一会儿我们会出现哈,我们可以整个把GM呢分成三层啊,最上层呢,我们叫类加载子系统,叫class loader subs systems,那第二部分呢,也是非常重要的一部分叫运行时数据区,从我们的第三章一直咱可以把直接内存也包进去吧,因为我们说方法区在JDK8以后呢,就叫原数据了,原空间了,那原空间呢,其实使用的就是本地内存啊,我们也可以称作叫直接内存了,这呢,我就把直接内存也化为到咱们的运行是数据区了啊。
06:34
那实际上这个直接内存就相当于是我们物理的一个内存了,呃,不跨过来也合理啊,中间这一块呢,是我们叫运行时数据区,也就是我们程序在运行过程当中,这个各种各样的指令需要用到的内存中的一些结构啊,它的一些具体使用情况,好,那下边的话呢,涉及到叫执行引擎,那么这些指令在分配到内存空间以后,怎么让它运行起来呢?这里需要呃,我们用到叫执行引擎啊,像解释器,即时编译器对吧,包括我们说的垃圾回收啊,这个垃圾回收器都是在我们的执行引擎这个结构当中的啊,就整个呢,上边这是涉及到是内存的,呃,分配执行这部分的内容,然后第12章呢,我们叫做string table。
07:23
String的话呢,其实按正来讲,我们也应该放在上面章节中来说,只不过呢,由于我们在呃开发当中用string用的非常多,包括像在JDK90的版本中,对string的底层结构也进行了变化啊,从一个差型数组变成了这个bad型的数组,加上一个这个字符编码的方式,那以及呢,在面试当中,大家在string方面呢,是问到非常多的,而且即使被问到次数多,也并不意味着所有的人都清楚的关于string的使用啊。再且呢,就是string在JDK的不同版本中也进行过这个存储位置的变化,所以呢,导致这块呢很多人模模糊糊,所以这块呢,我们不妨专门拿一张把string呢说透,这就我们的第12章。
08:08
好,那么后续的第13章到16章呢,大家看到的就是关于垃圾回收的内容,这也是我们说内存与垃圾回收的,诶算是其中的非常重要的一部分内容,那数据呢,在内存中分配完以后,我们要想重复利用这个现有的内存,我们就需要呢,对已有占用的空间的数据进行一个回收,那在这部分当中,我们比较重点关注的一个就是如何来判断它是一个垃圾,这就涉及到相关的算法问题,那算法只是一个理论层面的,具体实施层面呢,我们就需要面对具体的垃圾回收器,那我们看一下Java呢,在发展的历史长河当中都出现过哪些垃圾回收器,以及呢,在JDK90、11、12乃至于说13当中有没有新的垃圾回收器,未来的发展方向是什么样子的?诶,我们在这个部分内容中都有所讲解。
09:03
啊,这呢,就是整个咱们要讲的一个课程整体的目录,这也是我们Java逊尼上篇整体要给大家介绍的内容,那其实这里边的每一个章节都有大量的细节出现啊,都有大量的细节出现,这个呢,就等大家哎看到学到具体的章节的时候呢,我们再哎展开来说就可以了,好,先大家有一个整体认识。
我来说两句