Java 智能JVM和JIT微优化

Java 智能JVM和JIT微优化,java,jvm,jit,micro-optimization,Java,Jvm,Jit,Micro Optimization,随着时间的推移,Sun的JVM和JIT变得相当智能。过去作为必要的微观优化的常识不再需要,因为它会为您提供服务 例如,过去的情况是,您应该将所有可能的类标记为final,以便JVM尽可能多地内联代码。但是现在,JIT根据在运行时加载的类知道您的类是否为final,如果您加载一个类使原始类成为非final的,它将取消方法的内联并取消将其标记为final JVM或JIT还为您做了哪些智能微优化 编辑:我把它变成了一个社区维基;我想随着时间的推移收集这些东西。太令人印象深刻了。所有这些都是你在C++中

随着时间的推移,Sun的JVM和JIT变得相当智能。过去作为必要的微观优化的常识不再需要,因为它会为您提供服务

例如,过去的情况是,您应该将所有可能的类标记为final,以便JVM尽可能多地内联代码。但是现在,JIT根据在运行时加载的类知道您的类是否为final,如果您加载一个类使原始类成为非final的,它将取消方法的内联并取消将其标记为final

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


编辑:我把它变成了一个社区维基;我想随着时间的推移收集这些东西。

太令人印象深刻了。所有这些都是你在C++中不能用< >代码>(当然是java做的)。请记住,Java的早期版本由于没有这些东西而开始了“缓慢”的名声,随着时间的推移,我们会不断改进。这仍然是一个很大的研究领域

  • 非常快速的对象分配(幻灯片19左右)和

    • Java在内联方面尽可能地聪明

      • 内联代码仅在运行时可用 甚至是动态生成的
      • 内联虚拟方法(一次最多两个)
      • 对内联方法及其内联到的方法执行转义分析。(做起来难多了 (在C++中)

      Oracle有一个wiki。

      java可能很聪明,但它仍然使用大量的ressources@mnml这比流行的意见要少。要创建一个对象,我想他们需要2到3条指令。是的,像C++一样一般更快,但是“资源”不仅仅是CPU和内存;这也是工时。硬件便宜,人贵。从长远来看,java会经常在性能上胜出,因为JIT非常神奇,而且它比大多数C++应用程序都能梦想的更能优化应用程序。亚历克斯希望我能给你一个Rep,指出人们是资源。尽管相信那是可怕的。作为一名员工,你的时间通常会花费公司更多的钱,而不是说在硬盘上多出一个TB,或者在旧的web服务器上多出一个更好的CPU。