今天开始实战Java虚拟机之五“开启JIT编译”
总计有5个系列
Java虚拟机有3种执行方式,分别是解释执行、混合模式和编译执行,默认情况下处于混合模式中。使用命令行java –version可以查看虚拟机的执行模式:
C:\Users\Administrator>java -version java version "1.7.0_13" Java(TM) SE Runtime Environment (build1.7.0_13-b20) Java HotSpot(TM) 64-Bit Server VM (build 23.7-b01,mixed mode)
解释执行模式表示全部代码均解释执行,不做任何JIT编译,可以使用参数-Xint来开启解释执行模式:
C:\Users\Administrator>java -Xint -version java version "1.7.0_13" Java(TM) SE Runtime Environment (build1.7.0_13-b20) Java HotSpot(TM) 64-Bit Server VM (build 23.7-b01,interpreted mode)
编译执行模式和解释执行模式相反,对于所有的函数,无论是否是热点代码,都会被编译执行,使用参数-Xcomp可以设置为编译模式:
C:\Users\Administrator>java -Xcomp -version java version "1.7.0_13" Java(TM) SE Runtime Environment (build1.7.0_13-b20) Java HotSpot(TM) 64-Bit Server VM (build 23.7-b01,compiled mode)
【示例11-36】下面的代码不停计算圆周率的数值,并给出了运行的耗时:
public static double calcPi(){ doublere=0; for(inti=1;i<10000;i++){ re+=((i&1)==0?-1:1)*1.0/(2*i-1); } returnre*4; } public static void main(String[] args) { longb=System.currentTimeMillis(); for(inti=0;i<10000;i++) calcPi(); longe=System.currentTimeMillis(); System.out.println("spend:"+(e-b)+"ms"); }
spend:2794ms
使用虚拟机参数-Xcomp运行以上代码,输出:
spend:1082ms
很明显,在本例中使用编译运行要比解释运行快大约3倍。
《实战java虚拟机》一书Q交流群:397196583
原文地址:http://blog.csdn.net/xinaij/article/details/45335471