这个函数的堆栈是什么样子的

  • 本文关键字:什么样 堆栈 函数 jvm
  • 更新时间 :
  • 英文 :


我不得不回答以下问题。

给定的是函数:

show(int a, int b) 
{
    int v1;
    int v2;
}

a和b是参数。v1和v2是局部变量。绘制一个堆栈,其中a、b、v1、v2、旧帧指针和返回地址都在其中。还显示高堆栈地址和低堆栈地址的位置。

我希望我已经足够清楚了。

编辑:

我现在拥有的是:

v2      <-- SP
v1
prevLV  <-- LV
Ra
a
b

绘制一幅明确的图片很难,因为这取决于JVM的实现,但现在所拥有的不太可能是正确的。

因为Java不区分args和temps(参见iload等字节码),所以它们需要并排出现在内存中,或者有人必须在帧构建时将它们从调用者挂起堆栈复制到被调用者(这往往很昂贵)。

最新更新