Java 推入堆栈意味着什么?移动还是复制方法?

Java 推入堆栈意味着什么?移动还是复制方法?,java,methods,memory-management,heap-memory,stack-memory,Java,Methods,Memory Management,Heap Memory,Stack Memory,当一个对象调用一个函数时,该函数将从方法区域推送到堆栈中。我的问题是: 问:在这种情况下,“推动”是什么意思 这仅仅意味着移动(从方法区域)或复制函数(推送到堆栈上的方法副本)?方法本身不会推送到堆栈上。将推送返回地址以及传递给正在调用的方法的任何参数。例如: void foo() { int x = bar(); int y = x*3; ... } var bar() { ... return 5; } 当foo调用bar时,将要执行的下一条指令的

当一个对象调用一个函数时,该函数将从方法区域推送到堆栈中。我的问题是:

问:在这种情况下,“推动”是什么意思


这仅仅意味着移动(从方法区域)或复制函数(推送到堆栈上的方法副本)?

方法本身不会推送到堆栈上。将推送返回地址以及传递给正在调用的方法的任何参数。例如:

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

var bar() {
    ...
    return 5;
}
foo
调用
bar
时,将要执行的下一条指令的地址(分配
y
)推送到调用堆栈上。控件然后分支到执行其操作的
bar
,并将值
5
放入返回寄存器中(值的返回方式在这里并不相关)。然后,运行时从调用堆栈弹出返回值,并分支回该指令。继续执行
y=x*3

如果您搜索[java方法调用堆栈],您会发现一些很好的例子,其中有更详细的解释