Java JIT 是否在同一台机器上每次运行时都使用相同的优化来编译字节码?
它是否考虑了给定时刻的 CPU 使用率等动态因素,还是每次都会进行相同的优化而不考虑临时因素?
最佳答案
不,优化是不确定的。即使您运行完全相同的单线程、完全确定性程序,JIT 用来确定要优化哪些方法的采样器也可以选择不同的集合。
另一件可以改变生成的机器代码的事情是代码引用的某些常量的实际内存位置。 JIT 可以发出直接访问这些内存位置的机器指令,从而导致不同遍的机器代码之间存在额外差异。
研究人员使用 Jikes RVM通过使用名为 Compiler Replay 的功能解决了他们的基准测试问题.
关于java - Java JIT 是否确定性地编译字节码——在同一台机器上每次运行都进行相同的优化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17370294/