00:00
那下面我们来看一下GM的整体结构啊,GM整体结构中意呢,我们引入这样一个图了,那这个图的话呢,是呃,网上也好,或者一些书籍当中用的比较多的一张图啊,所以大家看到这张图呢,会比较有共鸣,那这里呢,我把这个图呢也放到这儿了,实际上呢,我们回头还可以把它继续进行一个细化啊,那细化呢,就是我们下一章当中就进行细化了,比如说大家打开这个呃,累加在此系统,你看进来以后呢,这呢就是我把它更详细的表达了一下以后啊,是这样的一张图,那我们先来看这样一个简图啊,那首先说一下这张图的重要性,这个图呢,需要大家会画。你可能现在画写呢,多少有点困难,等我们整个讲完这个GM上片的内容以后啊,这张图呢,大家应该是非常轻轻松松的就能画出来,而且呢,你要画的话呢,不只是这样来画了,应该是可以画出这样一张图了,那这张图呢,就要更复杂一些,就是各种细节呢,实际上都要清楚,呃,就是我们说有个成语呢,叫胸有成竹,那你呢,就相当于是心中有图啊,是这样啊好,那首先呢,提到这张图呢,我们说主要呢是针对的是houseport虚拟机啊,House虚拟机呢,我们在前边讲Java的一些重大事件的时候呢,也提到过啊,是我们这个Oracle jdk和open jdk相当于是共用的这个虚拟机叫hotport虚拟机啊嗯,那hotport虚拟机呢,其实主要的它的内存结构图呢,是我们这里边这张图。
01:27
好,那这张图的话呢,我们按照这个顺序给它分一分层哈,这看成是上层,这叫中层吧,这个呢叫下层,分成这样的三层,那从上面看,那前面我们已经反复的提到了Java虚拟机,它呢是来解释运行我们的自解码文件的,所以它的入口的原材料就是class files自解码文件,那自加码文件呢,首先需要使用,这呢,我们叫类装载器子系统class o sub system,这是英文的一个叫法,呃,叫装载器也好,叫加载器也好,都可以,它的主要作用呢,就是将我们的自检码文件呢,加载到内存当中,生成一个大的class对象。
02:06
啊,生成一个大的class对象,这些过程当中呢,会涉及到叫加载这个链接,还有呢叫初始化,那链接呢,又分成具体的有三步,这个我们呃,下边再讲的时候呢,就讲这个类装载子系统啊,就是整个咱们讲解后续这个章节的顺序呢,就是按照这个程序的一个解释运行的顺序来,首先呢,涉及到装载,我们先来讲内装载器此系统,然后呢,我们再讲具体的这个内存中的这个一些结构,最后呢,我们再来讲这个执行引擎啊这样好,那中间这一部分呢,叫运行时数据区啊叫runtime data area,很清楚呢,就是我们数据经过类状态器子系统以后呢,生成到这个,其实实际上是在方法区,我们呢,有对应的大的class的实例了啊大的class实例了,然后呢,根据我们具体的程序想要做的事情,我们这里边还提到了其他几个结构方法区堆Java站,Java站是以前的一个叫法,现在呢叫做虚拟基站啊,然后本地方。
03:07
霸站程序计数器,哎,我们称它叫PC这个寄存器,或者呢叫程序寄数器啊都可以,那具体呢,这里边每一部分的,呃,结构的作用是什么呢?这个我们后续呢,这也是作为非常重要的一部分呢来讲解的,那其中的方法区和堆呢,大家看到它俩颜色是一致的,这呢,我们想强调的就是在内存当中多个线程共享,堆和方法区多个线程共享的,那么对于站或者叫Java虚拟机站,本地方法站和程序计数器来讲,是每个线程独有一份的。啊,每个线程都有一份的,它是这样的一个特点,好,然后最下边这块呢,叫做执行引擎啊,执行引擎里边呢,其实有三部分这种啊,这个我们可以先打开看一下这个直行引擎。这个图呢,就稍微的详细一些,执行引擎的话呢,它分成叫解释器,叫解释器和JT即时编译器,以及呢叫垃圾回收器,那这三部分内容呢,是包含在我们执行引擎当中,所以这个呢大家首先要清楚,那我们说呢,嗯,把这个自解码文件加载到内存中以后呢,下一步叫解释运行了,这是咱们通常的叫法,那解释运行呢,用到的就叫做解释器,那我们说只用解释器的话呢,整体这个运行的体验呢,感觉稍微差一些啊,对于反复执行的热点代码,我们希望能够给他提前呢给他这个编译出来,所以这呢又提到了一个叫git编译器,那有同学会说,诶怎么这叫编译器,我们前面生成磁解码文件的时候,原文件是吧,生成磁解码文件的时候呢,这儿呢,我们也叫编译器,诶咱们前面提到过啊,这呢称为叫编译器的前端,那我们现在这里提到的叫做编译器的后端啊。
04:57
不叫变译器哈,有两端,那垃圾回收器啊,我们说这个实现垃圾的自动回收啊,主要借助于就是垃圾回收器了啊,就是这是我们说的执行引擎的这个这部分结构,那说完以后呢,大家对直行引擎合成还是比较模糊哈,说这哥们主要是干什么用的,这个我们说呀,这个直引引擎,或者说我们说的操作系统啊,实际上操作系统它只能够识别机器指令。
05:23
哎,只能够识别机器指令,但是我们这个自解码指令呢,是不等同于机器指令的,但我们要想这个我们的Java程序这个自解码文件能够这个解释执行,我们就得需要借助于执行引擎,那执行引擎呢,它其实就充当了我们说高级语言,把它翻译成机器语言这样的一个翻译者啊,它也是我们整个说扎尔逊尼当中最重要的这个结构之一啊。当然我们说之一了啊,这里边儿每一个结构其实都都是非常重要的是吧,是这样子的啊,行这呢,就是我们解释的这样的三层结构,大家需要呃,朦胧的知道每一部分结构的基本作用是什么,然后后续呢,咱们具体来展开课件的顺序呢,也是这样子的,类加载器,子系统,然后这块呢,就是我们来讲解的整体的运行时数据区啊这呢,我把这个直接内存也放进来了,然后接下来呢,就是执行引擎啊,这些细节呢,都在这里边啊。
06:19
行,这呢是我们说的GM的一个整体的结构。
我来说两句