java推入堆栈意味着什么?移动还是复制方法? 1 年 Questions & Answers 30 当一个对象调用一个函数时,函数将从方法区域被推入堆栈。我的问题是: 问:在这种情况下,“推动”是什么意思 这仅仅意味着移动(从方法区域)或复制函数(将方法推到堆栈上的复制)
# 1 楼答案 方法本身不会被推到堆栈上。将推送返回地址,以及传递给正在调用的方法的任何参数。例如: void foo() { int x = bar(); int y = x*3; ... } var bar() { ... return 5; } 当foo调用bar时,将要执行的下一条指令的地址(分配y)推送到调用堆栈上。控件然后分支到bar,它完成了自己的工作,并将值5放入返回寄存器中(在这里,返回值的方式并不相关)。然后,运行时从调用堆栈弹出返回值,并分支回该指令。继续执行y = x*3 如果你搜索[java方法调用堆栈],你会发现一些很好的例子,其中有更详细的解释
# 1 楼答案
方法本身不会被推到堆栈上。将推送返回地址,以及传递给正在调用的方法的任何参数。例如:
当
foo
调用bar
时,将要执行的下一条指令的地址(分配y
)推送到调用堆栈上。控件然后分支到bar
,它完成了自己的工作,并将值5
放入返回寄存器中(在这里,返回值的方式并不相关)。然后,运行时从调用堆栈弹出返回值,并分支回该指令。继续执行y = x*3
如果你搜索[java方法调用堆栈],你会发现一些很好的例子,其中有更详细的解释