JVM是否曾经重新编译编译过的代码?

JVM是否曾经重新编译编译过的代码?,jvm,runtime,jit,Jvm,Runtime,Jit,JVM(它们中的任何一个)是否重新编译过在运行时已经编译过的代码?这取决于重新编译的意思,但是HotSpot VM将丢弃依赖于乐观假设的代码,因为这些假设被证明是错误的或不再相关。见: 去优化是将优化的堆栈帧更改为未优化的堆栈帧的过程。关于编译方法,它也是一个丢弃带有无效乐观优化的代码,并用优化程度较低、更健壮的代码替换的过程 第四点特别有趣: 如果加载的类使早期的类层次结构分析无效,则任何线程中任何受影响的方法激活都将被强制到安全点并取消优化 这适用于乐观方法内联,如中所述: 类层次分析(CH

JVM(它们中的任何一个)是否重新编译过在运行时已经编译过的代码?

这取决于重新编译的意思,但是HotSpot VM将丢弃依赖于乐观假设的代码,因为这些假设被证明是错误的或不再相关。见:

去优化是将优化的堆栈帧更改为未优化的堆栈帧的过程。关于编译方法,它也是一个丢弃带有无效乐观优化的代码,并用优化程度较低、更健壮的代码替换的过程

第四点特别有趣:

如果加载的类使早期的类层次结构分析无效,则任何线程中任何受影响的方法激活都将被强制到安全点并取消优化

这适用于乐观方法内联,如中所述:

类层次分析(CHA)是 用于检测当前仅存在一种合适方法的虚拟呼叫站点。 然后对该方法进行优化内联。如果以后加载了类,则会添加 另一种合适的方法,因此,乐观假设不再适用 如果保持不变,则该方法将被取消优化


这取决于您所说的重新编译的意思,但是HotSpot VM将丢弃依赖于乐观假设的代码,如果这些假设被证明是错误的或不再相关。见:

去优化是将优化的堆栈帧更改为未优化的堆栈帧的过程。关于编译方法,它也是一个丢弃带有无效乐观优化的代码,并用优化程度较低、更健壮的代码替换的过程

第四点特别有趣:

如果加载的类使早期的类层次结构分析无效,则任何线程中任何受影响的方法激活都将被强制到安全点并取消优化

这适用于乐观方法内联,如中所述:

类层次分析(CHA)是 用于检测当前仅存在一种合适方法的虚拟呼叫站点。 然后对该方法进行优化内联。如果以后加载了类,则会添加 另一种合适的方法,因此,乐观假设不再适用 如果保持不变,则该方法将被取消优化