hotspot 什么意思,就是热点探测的意思,就是 jit,探测到时热点就编译为 native code ,后面再执行就快了。
就是执行测试多的代码,可以使用参数进行设置:
-XX:CompileThreshold = 10000 默认值1万
次数超过这个值就触发及时编译!
混合模式:
3.1 测试代码
package com.yuhl.c2020;
/**
* @author yuhl
* @Date 2020/12/23 21:20
* @Classname JIT
* @Description 解释执行和编译执行
*/
public class JIT {
public static void main(String[] args) {
long start = System.currentTimeMillis();
/**
* 混合型:4746ms
* 解释型:没等出来
* jit:4604ms
*/
for(int i=0; i<10_0000; i++) {
m();
}
long end = System.currentTimeMillis();
System.out.println(end - start);
}
public static void m() {
for(long i=0; i<10_0000L; i++) {
long j = i%3;
}
}
}
可以在执行前修改 jvm 的执行模式:
- 在目前的测试情况下是没有混合模式和 jit 模式差别不大。
- 在生产环境会混合模式效率最高
- 纯解释不可取,太慢了。特别是在重复执行同一个方法的存在情况较多的情况下。
- 纯 jit 也不可取,可能需要大量时间在启动的时候,如果不考虑启动时间的话可以采用这种方式。
自律的艰辛总甜过懊悔的苦果!
专注于 java 后端技术及解决方案,善于总结,分享!
自律的艰辛总甜过懊悔的苦果!
专注于 java 后端技术及解决方案,善于总结,分享!
自律的艰辛总甜过懊悔的苦果!
专注于 java 后端技术及解决方案,善于总结,分享!