java即时编译器热点探测
注意:仅仅是个人学习笔记,不会去全方面验证以下所说内容。
1,基于采样的热点探测(Sample Based Hot Spot Detection):周期性地检测各个线程的栈顶,如果发现某个方法经常出现在栈顶,换句话说就是某个方法频繁被调用,导致频繁入栈和出栈,那么就可以认为这个方法是热点代码。它的缺点是无法精确确认一个方法的热度,容易受线程阻塞或别的原因干扰探测的准确性。
2,基于计数器的热点探测(Counter Based Hot Spot Detection):这种探测方式会为每个方法,甚至是代码段添加两个计数器:方法计数器(用于统计方法调用次数)和回边计数器(统计for或者while的运行次数的计数器 ),用于统计执行的次数,它们一旦超过某种阈值,就判定为这段代码为热点代码。HotSpot虚拟机中采用的就是这种热点探测方法。