【问题标题】:How does JVM PC counter and stack space work with JIT?JVM PC 计数器和堆栈空间如何与 JIT 一起工作?
【发布时间】:2018-11-13 18:26:26
【问题描述】:

当 Java 方法被 JIT 编译并开始运行 JIT 编辑的本机代码时:

  1. 堆栈空间是否与之前在解释器模式下运行的堆栈空间相同?
  2. 在 JIT 模式下运行时,PC 计数器是否仍在更新?如果有,怎么做?

(假设我们使用的是 OpenJDK)。

【问题讨论】:

    标签: java jvm jit


    【解决方案1】:

    堆栈空间是否与之前在解释器模式下运行的堆栈空间相同?

    调用栈是一样的。换入 JIT 代码时,它不会重建堆栈。

    然而,值堆栈可以分配给寄存器,因此不在本机代码中维护。

    在 JIT 模式下运行时,PC 计数器是否仍在更新?如果有,怎么做?

    CPU 的 PC 计数器在本地模式下使用。虚拟寄存器在本机优化代码中是概念性的。

    【讨论】:

    • 您的意思是“虚拟寄存器”是 JVM 的“程序计数器 (PC) 寄存器”吗? “名义上的”是什么意思?如果 JIT 代码去优化到解释器模式,JVM 的“程序计数器 (PC) 寄存器”是否需要更新?
    • @Anonemous PC 计数器需要解释代码,但在运行本机代码时不维护 AFAIK。调用堆栈保持不变,但评估堆栈可以在运行时分配给寄存器。
    猜你喜欢
    • 1970-01-01
    • 2012-02-15
    • 1970-01-01
    • 1970-01-01
    • 2018-11-02
    • 1970-01-01
    • 2014-11-16
    • 2013-02-16
    • 2014-06-23
    相关资源
    最近更新 更多