“当我们的a方法开始运行,java虚拟机就会从栈里分配一块内存空间给到我们的a方法来使用。”
“如果我们在a方法中调用了另一个方法roance,那么,虚拟机就会给a方法和roance方法分别去分配专属于它们的内存空间,这个空间我们叫做栈帧,每个单独的栈帧中都存放着对应方法里的静态变量。”
“更具体一点,分别是局部变量表、操作数栈、动态链接以及方法出口。”
“当然,除了刚刚我讲过的堆、栈、方法区、本地方法栈这四个地方,运行时数据区中还有一块非常重要的区域,叫做程序计数器,是每一个线程都拥有的内存空间。”
“当我们去反编译获得css字节码文件,打开后可以看见一行行不像代码的代码,这些是jv对应的指令码,在每一行指令码之前,都会显示一个数字,当程序运行到第六行的时候,我们的程序计数器就等于六。”
“那么,谁能告诉我,为什么需要设计这个?”
陈一依站在众人身前,将星之杖反着拿在手中,末端指着身旁、众人平时用来连接ps5游戏机的屏幕上。
“。。。”
“应该是因为多线程吧。”书文好像想到了什么,却又说不准。
早在两个月前,张雨晴最后一次检查过后,就给他取下了背部固定用的夹板,但还是叮嘱他,严禁剧烈运动。
听了书文模棱两可的回答,陈一依微微点了点头。
“有这个意思,但还不准确,谁能补充?”陈一依拿起一旁的水杯,神情动作就像一位老练的教师:“我们站在设计者的角度去想,为什么要去设计出这样一个模型呢?”
叶雨萱坐在张雨晴和书文中间,乖巧地举起右手。
“来,小叶子说。”
“当方法运行的时候,cpu时间片突然被其他线程抢占了,那么这个方法就会暂时挂起,需要等待其他线程运行完之后,再回来继续执行,但肯定不能再重头去走这个方法,这样程序很有可能出现bug,程序计数器里的数,可以告诉cpu,具体应该从哪一行指令码开始执行。”
“萱萱,你好聪明!”张雨晴闪闪发光的眼睛里全是崇拜。
“我去,你和小晴不是医学生吗?这也知道?”离明也被震惊到了,瞪着眼睛看着她。
“这不是无聊,跟着你们一起听了几节课嘛。。。还是陈老师教的好!”叶雨萱有些害羞,将功劳都扔给陈一依。
“。。。”
“小叶子说的非常正确,剩余的关于内存调优的知识我们下次再讲,现在先跟你们讲一下正式工作中的事情,”陈一依顿了顿,“机遇巧合,前两天我接到了一个单子,就当做我们练手的项目。”
“做什么的?网站还是app?”
“做一款小程序,时间只有两个月,完工后有两万的工资,一次性结清。”
“两万?这不少了吧?”书文问。
“当然不少了,我们几个都是初学者,而且又没有正式的公司名头,我想,一依能找到这个机会,一定废了不少力气。”张雨晴歪着脑袋,说出了符合现状的事实。
“项目比较简单,非常适合练手,”陈一依点点头,也坐了下来,“一般来说,一个完整的项目需要八个部门组合完成,分别是项目经理、产品经理、ui设计师、前端开发工程师、后端开发工程师、测试、运维以及运营。”