jvm——分层编译
https://www.cnblogs.com/andy-zhou/p/5327288.html
分层编译根据编译器编译、优化的规模与耗时,划分出不同的编译层次:
第0层:程序解释执行,解释器不开启监控功能,已出发第一层编译
第1层:也称c1编译,将字节码编译成本地代码,进行简单可靠的代码(我理解的就是把class字节码变成c/c++编译出来的那种相对高效的native代码,可是为什么native就高效呢?)
第2层:c2编译,将字节码编译成本地代码,与此同时会启用一些优化手段(比如:公共子表达式消除、数组边界检查消除、方法内联等等)这些手段会导致编译时耗时较长,但是会使得之后的代码执行效率较高,所以热代码会使用c2