执行引擎
一.执行引擎概述
执行引擎的执行过程
二.Java代码编译和执行过程
橙色部分是由javac前端编译而成的
下面的可以参考<<编译原理>>
三.机器码.指令.汇编语言
机器码
指令
汇编语言
高级语言
字节码
解释器
解释器工作机制
解释器分类
现状
JIT编译器
java代码的执行分类
HotSpot JVM 的执行方式
案例
查看JIT编译器
可以在cmd中输入jconsole打开JDK根据查看
public class JITDemo {
public static void main(String[] args) throws InterruptedException {
ArrayList<Object> objects = new ArrayList<>();
for (int i = 0; i < 1000; i++) {
objects.add("胡琦" + i);
Thread.sleep(1000);
}
}
}
概念解释
热点代码及探测方式
方法调用计数器
热度衰减
回边计数器
HotSpot VM 可以设置程序执行方式
分别设置不同的JVM参数切换模式来查看执行所需的时间
public class JITDemo {
public static void main(String[] args) {
long start = System.currentTimeMillis();
test(1000000);
long end = System.currentTimeMillis();
System.out.println("花费的时间为: " + (end - start));
}
public static void test(int count) {
for (int i = 0; i < count; i++) {
// 计算100以内的质数
label :
for (int j = 2; j < 100; j++) {
for (int k = 2; k <= Math.sqrt(j); k++) {
if (j % k == 0) {
continue label;
}
}
}
}
}
}
Hotspot中 JIT分类
64位的操作系统默认都是service, 时没法进行选择的
C1和C2编译器不同的优化策略
写在最后: