压入栈是什么意思?移动或复制方法?

What does push into stack means? move or duplicate method?

当一个对象调用一个函数时,该函数会被从方法区压入栈中。我的问题是:

问:"push" 在这种情况下是什么意思?

这是否只是意味着 move(从方法区)或 copy 函数(a copy 压入堆栈的方法)?

方法本身没有被压入堆栈。 return 地址以及传递给您正在调用的方法的任何参数都会被推送。例如:

void foo() {
    int x = bar();
    int y = x*3;
    ...
}

var bar() {
    ...
    return 5;
}

foo调用bar时,下一条要执行的指令地址(y的赋值)被压入调用栈。然后控制分支到 bar,它执行它的操作,并将值 5 放入 return 寄存器(值是如何 returned 在这里并不真正相关)。然后,运行时从调用堆栈弹出 return 值并分支回该指令。执行继续 y = x*3.

如果您搜索 [java 方法调用堆栈],您会找到一些很好的示例,并提供更详细的解释。