概念
执行引擎的作用就是将class文件代码转化成机器语言,让计算机识别执行
通常说的JAVA是半编译和半解释型语言,原因就在于通用的Hotspot虚拟机的执行引擎的工作模式为解释器和JIT编译器共同协作
WechatIMG8.png默认模式是二者共同协作,可以修改成单一工作模式,但是没必要.
命令:
-Xint 单一解释器
-Xcomp 单JIT编译器
-Xmixed 两者混合使用-默认
工作原理
1.解释器:一行一行将字节码转化成机器语言执行 缺点:执行效率慢 优点:可以快速执行响应快
2.JIT编译器:先将字节码转化成机器语言然后缓存在方法区里面,下次执行就可以直接执行机器语言
缺点:第一次编译需要的实际长,响应慢 优点:后续的执行效率高
如何协作
WechatIMG9.png热点代码分析
HotStop虚拟机分为server和client模式,我们用的一般都是servcer模式,不同模式下的热点统计阀值不同
client: C1 当一个方法或者一个循环体在一段时间执行次数在1500以上的时候将进行即使编译,然后进行代码缓存.
server:C2 当一个方法或者一个循环体在一段时间执行次数在10000以上的时候进行即时编译,然后进行代码缓存,内部的优化也不一样
C2:内部优化都是基于逃逸分析的
1.栈上分配-hotstop虚拟机好像没支持
2.同步消除
3.标量替换
网友评论