Java jit编译器每次运行时都会编译代码吗?

时间:2015-02-18 16:04:52

标签: java jvm jit

我是java的新手并且正在努力理解以下内容: 每次运行代码时jit都会编译吗? (我知道jit优化了经常运行的代码,但我问的不是“热代码”)

1 个答案:

答案 0 :(得分:5)

JIT不记得以前的任何事情。

这意味着它可以在每次运行时编译代码。 JIT甚至可以在运行时对代码进行重新编译,以进一步优化代码,或者在检测到代码的使用方式发生变化时对其进行不同的优化。

不会被编译为热的代码将被编译,因为这可能比仅使用解释器运行它更昂贵。

当你有分层编译时(默认情况下在Java 8中打开),它会稍微编译适度的热代码,在你运行它时会重新编译它。它可以经历多个阶段。

如果要查看正在编译的内容,请在命令行中添加-XX:+PrintCompilation