这个,想要完全明白,你需要学习计算机组成原理,了解一点汇编知识。我打个比方吧,能明白最好,看不明白也没关系,初学者没必要太深究细节。
比如你买了主板、CPU、硬盘、内存条、显卡、键盘、鼠标、电源等等,想组装一台电脑。电脑城的人给你写了一份步骤说明,告诉你第一步做什么,第二步做什么。。。你回到家,开始按照说明操作,这个过程中,你需要腾出些地方来暂时摆放各个部件和那些包装盒吧,还得用到螺丝刀等辅助工具吧。组装完成之后你开始使用电脑,这时候螺丝刀不需要了吧,刚才摊了一地的空间可以用来放其他东西了吧,那些包装盒可以扔了吧。
在上面的场景中,电脑城的人给你写的组装步骤说明就相当于存在方法区的代码指令。摆放部件和包装盒的空间、用到的螺丝钉就相当于栈。可见,栈中的东西和方法区的东西是不一样的。栈是用来存放你执行方法代码时需要临时存放的中间结果。方法执行完毕,返回值已经返回,那么栈里的东西就不需要了,这时候刚才开辟的栈空间就可以回收了 |