解释执行(interperted)
优势在于没有编译等待时间
性能相对差一些
编译执行(complied)
运行效率会高很多,一般认为比解释执行快一个数量级
带来了额外开销
查询运行模式
java -version
-Xint:设置jvm执行模式解释执行模式
-Xcomp:Jvm优先以编译模式运行,不能编译的,以解释模式运行。
-Xmixed:混合模式运行
Hotspot的即时编译器-C1
C1编译器:
是一个简单快速的编译器
主要关注局部性优化
适用于执行时间较短或对启动性能有要求的程序,例如,GUI应用对界面启动速度就有一定要求
也被称为是Client Complier
Hotspot的即时编译器-C2
C2编译器:
是为长期运行的服务端应用程序做性能调优的编译器
适用于执行时间较长或对峰值性能有要求的程序
也被称之为Server Complier
分层编译
0:解释执行
1:简单C1编译,会用C1编译器进行一些简单的优化,不开启Profiling(性能监控)
2:受限的C1编译,仅执行带有方法调用次数以及循环回边执行次数的C1编译
3:完全C1编译,会执行带有所有Profiling的C1代码
4:C2编译,使用C2编译器进行优化,该级别会启