JVM PC在调用期间存储在哪里



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

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

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

相关内容

  • 没有找到相关文章

最新更新