目录
11.2 HotSpot虚拟机内的即时编译器
11.2.1 解释器与编译器
代码清单11-1,虚拟机执行模式
Microsoft Windows [版本 10.0.17763.316]
(c) 2018 Microsoft Corporation。保留所有权利。
C:\Users\ee>java -version
java version "1.7.0_80"
Java(TM) SE Runtime Environment (build 1.7.0_80-b15)
Java HotSpot(TM) Client VM (build 24.80-b11, mixed mode, sharing)
C:\Users\ee>java -Xint -version
java version "1.7.0_80"
Java(TM) SE Runtime Environment (build 1.7.0_80-b15)
Java HotSpot(TM) Client VM (build 24.80-b11, interpreted mode, sharing)
C:\Users\ee>java -Xcomp -version
java version "1.7.0_80"
Java(TM) SE Runtime Environment (build 1.7.0_80-b15)
Java HotSpot(TM) Client VM (build 24.80-b11, compiled mode, sharing)
C:\Users\ee>
11.2.4 查看与分析即时编译结果
代码清单11-2,测试代码
/*
* 代码清单11-2,测试代码
* VM Args:-XX:+PrintCompilation
*/
package cn.chapter11;
public class Solution11_2 {
public static final int NUM = 15000;
public static int doubleValue(int i){
return i*2;
}
public static long calcSum(){
long sum = 0;
for(int i =1;i<=100;i++)
sum += doubleValue(i);
return sum;
}
public static void main(String[] args) {
for(int i = 0;i<NUM;i++)
calcSum();
}
}
代码清单11-3,被=即时编译的代码:
30 1 java.lang.String::hashCode (55 bytes)
31 2 java.lang.String::indexOf (70 bytes)
31 3 java.lang.String::charAt (29 bytes)
32 4 java.lang.Object::<init> (1 bytes)
33 5 cn.chapter11.Solution11_2::doubleValue (4 bytes)
33 6 cn.chapter11.Solution11_2::calcSum (26 bytes)
35 7 % cn.chapter11.Solution11_2::main @ 5 (20 bytes)
不知什么原因报错(可能是虚拟机的原因,书上说了一下):(所以没有结果)待解决。。。。
Improperly specified VM option 'PrintInlining'
11.3 编译优化技术
11.3.1 优化技术概览
没什么好说的。。。