JVM Java虚拟机和堆栈

时间:2013-08-26 18:06:50

标签: java jvm stack frame

我有一个我感兴趣的查询,我想要一个完整的解释,因为我找不到任何答案,但任何人都可以向我解释JVM(Java虚拟机)如何使用堆栈和堆栈帧来组织它的计算?

1 个答案:

答案 0 :(得分:3)

Java字节码是所谓的stack-oriented programming language。许多虚拟机使用此模型 - 与物理机的体系结构形成对比。

以下是一个例子:

public static int foobar(int value) {
    return value + 42;
}

此方法的Java字节代码如下所示:

iload_0
bipush 42
iadd
ireturn

这些说明不使用寄存器。相反,他们使用堆栈进行计算:

  • 将第一个参数推入堆栈。
  • 将常量42推入堆栈。
  • 从堆栈中弹出两个元素,添加它们并将结果推送到堆栈中。
  • 从堆栈中弹出顶部元素并将其返回。

所有其他Java字节码操作都是一样的。没有可以使用的寄存器。所有操作都将元素推入和移出堆栈。