1 Java平台java
Java采用的是解释和编译混合的模式。它首先经过javac将源码编译成字节码文件class.而后在运行的时候经过解释器或者JIT将字节码转换成最终的机器码。
只是用解释器的缺点:抛弃了JIT可能带来的性能优点。若是代码没有被JIT编译的话,再次运行时须要重复解析。
只用JIT的缺点:
须要将所有的代码编译成本地机器码。要花更多的时间,JVM启动会变慢很是多;
增长可执行代码的长度(字节码比JIT编译后的机器码小不少),这将致使页面调度,从而下降程序的速度。
有些JIT编译器的优化方式,好比分支预测,若是不进行profiling,每每并不能进行有效优化。
所以,HotSpot采用了惰性评估(Lazy Evaluation)的作法,根据二八定律,消耗大部分系统资源的只有那一小部分的代码(热点代码),而这也就是JIT所须要编译的部分。JVM会根据代码每次被执行的状况收集信息并相应地作出一些优化,所以执行的次数越多,它的速度就越快。
JDK 9引入了一种新的编译模式AOT(Ahead of Time Compilation),它是直接将字节码编译成机器码,这样就避免了JIT预热等各方面的开销。JDK支持分层编译和AOT协做使用。性能
2 exception 和 error优化
3 final finally finalizeui
4 引用: 强 软 弱 虚lua
5 string stringbuilder stringbuffer3d