Java JIT是否对同一台机器上的每次运行都进行了相同的优化?

Java JIT是否对同一台机器上的每次运行都进行了相同的优化?,java,optimization,jit,jvm-hotspot,Java,Optimization,Jit,Jvm Hotspot,Java JIT是否在同一台机器上每次运行时都使用相同的优化编译字节码 它是否考虑了动态因素,比如给定时刻的CPU使用情况,或者它每次都会进行相同的优化,而不考虑临时因素?否,优化是不确定的。即使运行完全相同的单线程、完全确定的程序,JIT用来确定要优化哪些方法的采样器也可以选择不同的集 另一件可以更改生成的机器代码的事情是代码引用的某些常量的实际内存位置。JIT可以发出直接访问这些内存位置的机器指令,从而导致不同过程中机器代码之间的额外差异 使用的研究人员通过使用一个名为的功能为他们的基准测试

Java JIT是否在同一台机器上每次运行时都使用相同的优化编译字节码


它是否考虑了动态因素,比如给定时刻的CPU使用情况,或者它每次都会进行相同的优化,而不考虑临时因素?

否,优化是不确定的。即使运行完全相同的单线程、完全确定的程序,JIT用来确定要优化哪些方法的采样器也可以选择不同的集

另一件可以更改生成的机器代码的事情是代码引用的某些常量的实际内存位置。JIT可以发出直接访问这些内存位置的机器指令,从而导致不同过程中机器代码之间的额外差异


使用的研究人员通过使用一个名为

的功能为他们的基准测试解决了这个问题。哪个Java JIT编译器?我想知道热点的情况如果您的程序具有随机性,一次运行调用方法a,另一次运行调用方法B,则否,你不会得到同样的优化。但是如果采用完全相同的代码路径呢?我不确定这是否对你有帮助,但你可以强制它以不同的方式优化你的函数。见: