jvm|JVM底层原理之什么是分层编译?( 二 )


⑤还有一种情况就是因为激进优化产生的问题 , 由于C2激进的策略 , 导致编译出来的C2代码有问题 , 这时候会进行反优化 , 重新进入解释器解释执行的阶段 。
分层优化就是这样灵活的在各个层次间反复横跳 , 以达到效率和质量的平衡点 , 显然这比单一的使用C1或C2要强大多了 。
JDK8开始【jvm|JVM底层原理之什么是分层编译?】并且从JDK8开始 , 默认启用分层编译Tiered Compilers , 这时候已经没有【-client】和【-server】指令了 , 这时如果只想开启 C2 , 可以关闭分层编译(-XX:-TieredCompilation) , 如果只想使用 C1 , 可以在打开分层编译的同时 , 使用参数:-XX:TieredStopAtLevel=1 , 其实就相当于只进行到level1层次的分层编译 。