JVM判断代码是否是热点代码方式

 判断一段代码是否是热点代码方式有两种:
 1)基于采样的热点探测
 2)基于计数器的热点探测,采用这种方法的虚拟机会为每个方法建立计数器,统计方法的执行次数,如果执行次数超过一定的阈值就认为它是热点方法。方法调用计数器统计的并不是方法被调用的绝对次数,而是一个相对的执行频率,即一段时间内方法被调用的次数,当超过一定的时间限度,如果方法的调用次数仍然不足以让它提交给即时编译器编译,那这个方法的调用计数器就会被减少一半,这个过程称为方法调用计数器的热度的衰减,而这段时间就成为此方法统计的半衰周期,进行热度衰减的动作在虚拟机进行垃圾收集时顺便进行了。

 判断一个循环体代码是否为热点代码的方式:
 回边计数器,它的作用是统计一个方法体重循环体代码执行的次数,在字节码中遇到控制流向后跳转的指令成为回边,显然,建立回边计数器统计的目的就是为了触发OSR编译。没有计数热度衰减的过程,因此这个计数器统计的就是该方法执行循环的绝对次数,当计数器溢出的时候,它还会把方法计数器的值也调整到溢出的状态,这样下次在再进入该方法的时候就会执行标准编译过程。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 部分的商用虚拟机中,Java程序最初是通过解释器进行解释执行的,当虚拟机发现某个方法或代码块的运行特别频繁时,就会...
    胡二囧阅读 856评论 0 1
  • JAVA简介 基本语言特性(面向对象(封装,继承,多态),泛型,Lambda,反射) 平台无关性(JVM运行.cl...
    GuoDongW阅读 680评论 0 3
  • 《深入理解Java虚拟机》笔记_第一遍 先取看完这本书(JVM)后必须掌握的部分。 第一部分 走近 Java 从传...
    xiaogmail阅读 5,175评论 1 34
  • 珠海市香洲区幼儿园一体化发展联盟启动 手拉手 促幼教 10月8日上午,香洲教育幼儿园、南山幼...
    花花小丸子阅读 344评论 0 0
  • 今天上午,下发了数学小卷,我一看,我得了94分,我又看了一下周围同学的小卷,好几个都是100分,潘志峰的进...
    小王子WXN阅读 641评论 3 3