代码之家  ›  专栏  ›  技术社区  ›  HectorMac

智能JVM和JIT微优化

  •  6
  • HectorMac  · 技术社区  · 5 年前

    随着时间的推移,Sun的JVM和JIT变得相当聪明。以前作为必要的微观优化的常识已经不再需要了,因为它会为您提供帮助。

    例如,以前应该将所有可能的类标记为final,这样JVM就可以尽可能多地内联代码。但是现在,JIT会根据运行时加载的类来确定类是否为final,如果您加载一个类以使原来的类成为非final的,它会取消方法的内联并取消将其标记为final。

    JVM或JIT还为您做了哪些智能微优化?

    编辑 :我将此作为社区wiki;我希望随着时间的推移收集这些内容。

    3 回复  |  直到 8 年前
        1
  •  6
  •   Sam Harwell    15 年前

    简直令人印象深刻。所有这些都是你想要的 can't 在C++中(当然java也一样)。请记住,Java的早期版本由于没有这些东西而开始了“缓慢”的名声,我们一直在改进 明显地 随着时间的推移。这仍然是一个很大的研究领域。

        3
  •  3
  •   Peter Lawrey    15 年前

    • 内联代码仅在运行时可用
    • 内联虚拟方法(一次最多两个)
    • 对内联方法及其内联到的方法执行逃逸分析。(更难做到) 在C++中