是回边计数器没有热度衰减的概念,其统计的是方法循环执行的绝对次数,
如何编译的
在默认设置下,无论是方法调用还是OSR调用,都会进行异步的编译,用户可以通过-XX:-BackgroundCompilation来禁止后天的编译.在禁止之后,那就只能编译完成才能执行代码了
在后台的执行编译过程中,两个编译器的编译过程是不一样的,对Clint Compiler来说,是一个简单的快速的三段式编译器,主要关注点在于局部性的优化
1.一个平台独立的前端将字节码构成一种高级中间代码(HIR)表示,HIR使用静态单分配形成代码值进行一些基础优化
2.从HIR中产生低级的中间代码,在HR上完成另外的一些优化,空值的检查消除,范围的检查消除
3.后端最后采用线性的扫描算法,产生机器码
在Server Compiler中,会更加的复杂,他会在执行所有经典的优化后,实施一些和Java语言相关的优化技术,范围检查消除和空值检查消除,除此外还有一些不稳定的激进的优化,守护内联,分支频率预测
Server Compiler的寄存器分配器是一个全局的着色分配器,尽可能减少本地代码的执行时间