当一个对象调用一个函数时,该函数会从方法区被压入堆栈。我的问题是:问:在这种情况下,“推”是什么意思?这是否仅仅意味着移动(从方法区)或复制功能(的副本的方法的压入堆栈)?
1 回答
交互式爱情
TA贡献1712条经验 获得超3个赞
方法本身不会被压入堆栈。推送返回地址,以及传递给您正在调用的方法的任何参数。例如:
void foo() {
int x = bar();
int y = x*3;
...
}
var bar() {
...
return 5;
}
在foo调用 时bar,将要执行的下一条指令的地址(对 的赋值y)被压入调用堆栈。控制然后分支到bar,它做它的事情,并将值5放在返回寄存器中(如何返回值在这里并不真正相关)。然后,运行时从调用堆栈中弹出返回值并分支回到该指令。继续执行y = x*3。
如果您搜索 [java 方法调用堆栈],您会发现一些很好的示例,其中包含更详细的解释。
添加回答
举报
0/150
提交
取消