我是java的新手并且正在努力理解以下内容: 每次运行代码时jit都会编译吗? (我知道jit优化了经常运行的代码,但我问的不是“热代码”)
答案 0 :(得分:5)
JIT不记得以前的任何事情。
这意味着它可以在每次运行时编译代码。 JIT甚至可以在运行时对代码进行重新编译,以进一步优化代码,或者在检测到代码的使用方式发生变化时对其进行不同的优化。
不会被编译为热的代码将被编译,因为这可能比仅使用解释器运行它更昂贵。
当你有分层编译时(默认情况下在Java 8中打开),它会稍微编译适度的热代码,在你运行它时会重新编译它。它可以经历多个阶段。
如果要查看正在编译的内容,请在命令行中添加-XX:+PrintCompilation
。