0

据我所知,JIT 将字节码编译成可以运行得更快的本机机器码。所以根据我的信念,我的问题的答案应该是 1.翻译成机器码 2.解释字节码。解释代码意味着执行代码。但我找到了相反的答案!谁能解释一下...在此先感谢

4

1 回答 1

2

一旦你有了字节码序列的机器码(正如你所注意到的,它应该比解释更快),继续解释那个字节码序列 (*) 是没有意义的。在后台运行或尚未开始编译时进行解释更有用(无论出于何种原因——一个常见的情况是:代码执行的频率不够高,不值得编译)。

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

于 2012-11-14T19:15:29.193 回答