00:01
嗯,行同学们,那咱们就继续再往下吧,那这个内容咱们理解了,方法也理解了,怎么去定义对吧,怎么去调用,然后呢,这个语法呢,给大家讲解了之后啊,那么接下来咱们看看什么呢?咱们看看这个方法执行过程当中一个内存是怎样的。就是我们讲点高端的各位啊,就是这个东西呢,呃,需要去理解,只有你把内存结构,就是方法执行过程当中,在内存里边是如何变化的,我觉得把这个高深的东西给他掌握了之后,你再再以后再无敌的就是啊,就是遇遇见任何问题就就是没没有没有问题了,关于方法执行过程当中的啊,执行过程当中,所以啊这个东西呢,我觉得各位呢,一定要谨慎一下啊,然后呢,集中精力的去听一下,好吧,集中精力去听一下。接下来讲的是关于方法执行过程当中,这个内存是如何变化的,那么在讲这个方法的时候啊,我觉得得给大家讲一讲什么呢?讲一讲我们Java虚拟机的内存结构。啊,我们先给讲讲Java虚拟机的内存结构,然后呢,我还得给大家讲一讲一种数据结构,叫做站的这种数据结构啊,说完站的数据结构之后呢,我们才可以去给大家讲讲方法执行过程当中的一个内存的一个变化啊,内存的一个变化,所以这块呢,有一个站的数据结构啊,还有一个方法执行过程中内存的一个变化啊,这个都是相当重要的内容啊,相当重要内容,嗯。
01:23
在这里呢,咱们大家呢,注意集中精力的去听一下啊。这样我先不写,不写例子啊,我先去。先先去画个图,各位啊。呃,首先啊,我在这里呢,先给大家说一下我们Java虚拟机的内存结构,好吧。然后说完Java虚拟机内存结构之后啊,我再给大家呢,去说一说我们的站的一个内存这个数据结构,站的数据结构啊。呃,大家注意听啊。嗯,抽象的这个图又出来了,各位啊,抽象图又出来了,大家注意注意啊,这个图呢,比较抽象啊。
02:05
来,假如说摆在您面前的这个东西啊。呃,灵魂画手啊JVM,哎呀,这个字有点大,要改小一点。啊GM,假如说这个东西是一个Java虚拟机啊,Java虚拟机应该知道哈,这叫做Java虚拟机。啊,加入虚拟机。这个Java虚拟机啊,它是一个虚拟的电脑。啊,虚拟的电脑,那么Java虚拟机这里面有几块重要的这个内存空间呢,大家要注意一下。啊,注意一下啊,有一块内存空间。有一块内存空间啊,它叫什么呀,叫做。叫做这个方法区啊。方法区。啊,然后呢,它还有一块这个内存空间啊,这块空间叫什么呀,叫做。堆内存。啊,或者叫堆曲。啊,叫堆渠。啊。
03:01
然后呢,它还有呢,这个这个这个这个这个一块空间啊,一块空间,这块空间呢,叫做占叫做站啊。是哪个站,哎,一个木字旁啊这个站。英语单词呢,我们叫做stack啊,这个S变成小写吧,叫stack啊,占内存啊,或者叫占区啊,堆区或者堆内存啊都行。堆内存啊都可以。那么这块呢,这个堆里边存什么以后啊,堆当中存什么啊,就是堆当中存储什么。以后啊,以后。啊,然后所以呢,这块呢,你就当他没看见啊,没看见。那么。我们的Java虚拟机当中,除了这三块什么站呀?堆呀。
04:02
注意啊,是有的。啊JVM中主要的三块内存空间啊,是占。堆方法区啊,占堆方法区啊,是这样的啊,当然除了这三块之外啊,还有其他的啊,这里先不用管了啊,还有其他的啊,只不过这这几块是主要的啊,这几块是主要的。除了三块之外,还有其他的啊嗯,然后呢,这个堆这一块呢,我说了以后呢,咱们再说以后再去讲啊,这个占这块啊,我这不应该把这口封住啊,应该把这个口怎么着给它划开。可这样啊,这是一个啊占内存啊,下边是底是封着的,上面口是开着的啊占内存这是对,这是方法区,那么现在呢,我要给大家说一下啊,说什么就是方法区里面是什么东西。
05:04
方法区里边放的是哎代码片段,方法区当中放的是代码片段啊,这个类加载器类啊加载器class什么loader啊class loader将什么呀,将硬盘上的某某某点class自解码文件干什么呀?哎装载到叫做装载啊装到。啊,JVM的时候,JVM的时候啊啊十呃。装载到JVM的时候,会将字解码文件存放到哎方法区当中啊,方法区当中也就是说,也就是说啊,方法区中存储的是哎代码片段啊代码片段起了个名字,各位啊,叫做方法区啊,叫做方法区很有意思。
06:06
方法区啊,它这里面存的是代码片段,就是代码,代码在这在这在这块放着的。啊,代码在这块放着呢。那这块呢。别看他带两个字啊,叫什么方法,其实和方法没关系。它其实是一个静态区啊,这个静态现在还提不了啊,有些学说是静态,那它还有动态是不是啊,那其实这个就是动态区啊,这是静态区,静态区啊,存储的都是一些啊,静态的一些,呃,后期会学啊静态的一些变量啊,啊或者说是静态的一个代码呀,哎,都是到这儿的啊。那么实际上我们占堆还有方法区这三块内存空间啊,其中这个方法区这块是最先有东西的啊,因为类加载器是先把class文件装载到内存当中,所以方法区里边是最先有数据的,最先有东西的啊,方法是最先有东西的啊。
07:06
因为类类需要干什么呀,需要加载啊,所以方法区当中最先有数据。最先有数据啊,那么这块方法区里到底存什么,我再强调一下啊,方法区里的是我们这个代码啊,就是代码是在这。代码片段啊,代码扣的啊,哎,代码扣的在这。在这个方法区这一块啊。那行了,那么我们呢,实际上啊,把这个class文件装载到我们的方法区当中之后呢,我们Java虚拟机就会去找你这个代码里面那个哪个方法呀。Java虚拟机JVM啊,会去找你这个方法区里边的这个代码里边的什么呀,那个闷方法啊,就开始执行你那个闷方法。
08:03
啊,开始执行方法,那么闷方法呀,执行的时候它是不是需要需要需要分配内存,是不是需要给这个方法分配个空间,对不对,那它在哪分配呢?哎,就是在我们占内存当中给闷方法分配空间。啊,在占内存当中给main方法分配空间。啊,所以说在程序的执行过程当中,方法调用时,方法调用时会在占内存当中给这个方法分配空间。啊,就是占是干啥的呢?在方法被什么调用的时候啊,该方法需要的什么内存空间。啊,在占中分配啊,在占中分配,我先把这个事儿呢告诉大家啊,有同学老师他为什么。在战中分配呢?
09:02
来我们先保存一下啊,保存一下这个这个这个图啊。嗯,保存到哪儿呢?就保存这吧。这个我们叫什么呢?叫做JVM的主要内存空间啊三块,这三块是主要今天讲的,后期我们还会接触一些别的空间啊,你先把这几块的名字先记住对吧,GM当中有什么样方法去啊。是不是,哎有这个叫什么呀,堆区啊。啊堆区,然后有还有什么呀,占区是不是占内存啊,堆内存里边什么不知道啊,以后会讲方法区里边存什么,你要清楚,它存的是字解码字解码啊,某某某点class自解码文件,代码是放在方法区里边的,Java虚拟机经过类加载器,类加载器去硬盘上找到class文件八装载进来,把代码先放到这个地方,那么代码放进来之后呢,先去执行main方法,Main方法在执行的时候,方法执行所需要的内存空间在占中进行分配啊。
10:04
那么这个站是个什么呢?那么接下来我觉得还得拐个弯啊,还得给大家讲讲什么呀,就是数据结构啊,站是一种数据结构。嗯。来这块我先关掉啊,内存呃,空间的主要描述就先说到这儿啊。嗯。
我来说两句