随着时间的推移,Sun的JVM和JIT变得非常聪明.以前不再需要将常识作为必要的微优化的东西,因为它会得到照顾.
例如,过去应该将所有可能的类标记为final,因此JVM会尽可能多地内联代码.但是现在,JIT根据在运行时加载的类知道你的类是否是最终的,如果加载一个类使原始类不可能,它会取消内联方法并取消标记为最后.
JVM或JIT还为您做了哪些其他智能微优化?
编辑:我把它做成了社区维基;我想随着时间的推移收集它们.
解决方法
它令人印象深刻.所有这些都是你在C中无法做到的事情(当然
Java也是如此).请记住,早期版本的Java由于没有这些东西而开始了“缓慢”的声誉,并且随着时间的推移我们会不断改进.这仍然是一个很大的研究领域.
> Efficient interface dispatch.
> Inlining and direct dispatch of virtual method calls.
>使用bump pointers(幻灯片19左右)和escape analysis快速分配对象.