使用JIT编译器首先是什么?转换成机器代码还是解释字节码?

时间:2012-11-14 19:10:16

标签: java jvm jit

据我所知,JIT将字节码编译成可以更快运行的本地机器代码。所以根据我的观点,我的问题的答案应该是1.转换为机器代码 2.解释字节码。解释代码意味着执行代码。但我找到了相反的答案!任何人都可以解释一下......在此先感谢

1 个答案:

答案 0 :(得分:2)

一旦你有一个字节码序列的机器代码(正如你所说,它应该比解释更快),继续解释那个字节码序列(*)是没有意义的。当编译在后台运行时解释更有用,或者还没有启动(无论出于何种原因 - 常见的情况是:代码没有经常执行,被认为值得编译)。

(*)实际上,一些JIT编译器会对机器代码进行专门化处理,以至于它对某些代码路径或输入无效,并且在发生这些代码路径或输入时必须回退到解释/重新编译。甚至其他JIT编译器有时会重新编译代码,这可能会也可能不会导致暂时回到解释。但总的来说,如果代码适用并且速度更快(总是应该如此),那么不使用它就没有意义。