JIT(just in time)即时编译器
JIT(just in time)
前端vs后端
在编译原理中,通常将编译分为前端和后端。其中前端会对程序进行词法分析、语法分析、语义分析,然后生成一个中间表达形式(称为IR:Intermediate Representation)。后端再讲这个中间表达形式进行优化,最终生成目标机器码。
在Java中,javac之后生成的就是中间表达形式(.class)
JVM在执行时,首先会逐条读取IR的指令来执行,这个过程就是解释执行的过程。当某一方法调用次数达到即时编译定义的阈值时,就会触发即时编译,这时即时编译器会将IR进行优化,并生成这个方法的机器码,后面再调用这个方法,就会直接调用机器码执行,这个就是编译执行的过程。
字节码-->机器码:
- 用的时候直接翻译(解释器)
- 用的时候直接翻译,并把常用的方法等缓存起来,下次再用的时候直接取用(CodeCache)
可以通过java -XX:+PrintFlagsFinal打印出所有参数的默认值
参考
相关推荐
89467505 2020-05-08
82921934 2020-05-04
82921934 2020-02-18
85981936 2019-10-24
86123158 2019-07-01
82921934 2019-06-27
cHeNjUiOr 2010-06-16
89921237 2019-03-09
86284457 2020-11-10
wanyi0 2020-11-03
84520193 2020-06-26
84520193 2020-05-29
89481259 2020-04-22
86921239 2020-01-13
89467505 2020-01-05
82467413 2019-12-31
82921934 2019-12-23
84520193 2019-12-16
徐建岗网络管理 2019-12-15