0

我目前正在阅读 JVM 的最新规范。很明显,每个线程都有自己的调用堆栈和自己的程序计数器,用于跟踪(下一条)要执行的指令。我的问题可能是转储,但从描述中,我找不到答案。

new调用一个或一个方法时,当前程序计数器存储在哪里?换句话说,调用方法后线程现在如何继续?

4

1 回答 1

2

答案取决于实现,因为不同的硬件架构甚至不同的 JVM 可能以不同的方式实现此行为。在标准的 Oracle JVM 中,您的大部分字节码将由 JIT(即时编译器)编译为本机代码,并且方法调用将作为本机代码执行(提供或获取一些可能添加以处理检查点等的额外代码)。 )。在 PC 上,这意味着当前寄存器值(包括指令指针/程序计数器)将在方法调用之前保存在堆栈中。从调用返回时,处理器从堆栈中弹出这些值,其中包括返回地址。

于 2018-11-16T09:47:45.210 回答