Write Once, Run Everywhere!
Java运行在JVM中,不直接与底层平台交互,牺牲了平台级的代码优化,获取了高度的可移植性。
类加载器
运行时数据区
执行引擎
- 解释执行:逐条解释字节码指令,翻译成机器码执行
- 即时编译(JIT):运行过程中根据运行时信息将整段机器码指令进行优化,存到code cache中备用
即时编译属于动态编译,存在额外开销,如果代码执行频率低,解释执行即可
如果代码执行频率高,才值得编译一次,直接运行cache中优化过的代码,提升执行效率
客户端和服务端有不同的优化策略,根据场景配备不同的即时编译器
客户端模式注重快速启动,优化比较轻量,资源消耗少
服务端模式注重长期性能,优化更高级,资源消耗大
Java7时期引用层次编译,融合二者特点,初期用客户端模式,响应更快,后期用服务端,更好的优化
部署时要考虑到冷机状态和热机状态下的性能差异
常见的优化有死代码剔除,方法内联,循环优化等
解释和编译行为可控,-Xint
只进行解释执行,-Comp
只进行编译执行
一分也是爱~
版权声明
This site by Linest is licensed under a Creative Commons BY-NC-ND 4.0 International License.
由Linest创作并维护的博客采用创作共用保留署名-非商业-禁止演绎4.0国际许可证。