Java 关于热点的动态反优化
当我阅读《Scala深入》一书时,它提到HotSpot编译器有几个重要特性,其中之一是“动态去优化”: 这是一种确定某个优化实际上是否没有提高性能并撤销该优化,从而允许应用其他优化的能力 热点似乎会尝试各种“优化”,并从中选择最好的一种 但我不太明白。这里的“优化”都是由HotSpot提供的吗?我的意思是程序员经常尝试用一些技巧来优化代码,HotSpot会处理它们吗 “编译器优化”是对代码的一种转换,目的是在某种意义上使代码变得更好——通常,它需要更少的时间来执行。有一个很好的列表,列出了常用的优化方法;Hotspot JIT编译器可能会执行所有这些操作,甚至更多操作 所以这本书的意思是Hotspot将把这些技术中的一些应用到代码中,看看它是否改善了运行时,如果没有,它将恢复运行时Java 关于热点的动态反优化,java,optimization,jvm-hotspot,Java,Optimization,Jvm Hotspot,当我阅读《Scala深入》一书时,它提到HotSpot编译器有几个重要特性,其中之一是“动态去优化”: 这是一种确定某个优化实际上是否没有提高性能并撤销该优化,从而允许应用其他优化的能力 热点似乎会尝试各种“优化”,并从中选择最好的一种 但我不太明白。这里的“优化”都是由HotSpot提供的吗?我的意思是程序员经常尝试用一些技巧来优化代码,HotSpot会处理它们吗 “编译器优化”是对代码的一种转换,目的是在某种意义上使代码变得更好——通常,它需要更少的时间来执行。有一个很好的列表,列出了常用的
正如您正确指出的,手动更改代码以使其更好的过程也称为“优化”或“手动优化”。编译器尝试应用尽可能多的优化,但许多可能的修改仍然需要手动应用。同样,.HotSpot的优化与开发人员在Java源代码级别所做的优化是不同的,尽管有些优化具有相同的净效果 这是JIT编译器库的一部分:
- 方法调用内联李>
- 从循环中提升值李>
- 单态呼叫位点李>
- 在堆栈上放置对象,以逸出分析为准李>
- 将变量绑定到CPU寄存器李>
- 锁省略