美文网首页
jvm热点代码检测机制 #jvm运行期优化#

jvm热点代码检测机制 #jvm运行期优化#

作者: 漫步无法人生 | 来源:发表于2019-06-16 16:32 被阅读0次

1. 基于采样的热点探测

采用这种方法的虚拟机会周期性地检查各个线程的栈顶,如果发现某个方法经常出现在栈顶,这个方法就是热点方法。

优点:这种方法实现起来较为简单,可以很容易的获取方法调用的关系
缺点:是由于有线程阻塞或别的因素影响,无法精确的对热点进行探测

2. 基于计数器的热点探测

采用这种方法的虚拟机会为每个方法(甚至是代码块)建立并维护计数器,统计方法的执行次数,执行次数超过一定的阀值就会认为它是热点方法
优点:这种方式更加精确和严谨
缺点:但统计时需要为每个方法建立并维护计数器,而且不能获取方法的调用关系,实现起来较为麻烦

计数器分两类:

  • 方法调用计数器:统计一段时间内方法被调用的次数,当超过一个时间限度,它的调用次数仍然不足以给JIT编器编译,这个方法的调用计数久会减半,统计方式不是绝对的。
  • 回边计数器:主要是统计循环体内的代码执行的次数,在字节码遇到控制流后向后跳转的指令称为回边,建立回边计数器也是为了触发OSR。因为有些情况下,比如空的循环,照样会执行对应的次数,但它是直接跳转到自己,所以JIT编译器去编译这种代码是没有任何意义的。

3. 基于踪迹(Trace)的热点探测

采用这种方式的虚拟机是将一段频繁执行的代码作为一个编译单元,并仅对该代码片段进行编译,该代码片段由一个线性且连续的指令序列组成,仅有一个入口,但有多个出口。也就是说,基于踪迹而编译的热点代码不仅仅局限在一个单独的方法或者代码快中,一条Trace可能对应多个方法,代码中频繁执行的路径就可能被识别成不同的踪迹。
优点:因此这种方法有着更高的精度,并且能够避免编译不是频繁执行的代码,减少不必要的编译开销
缺点:但这种方法的实现就更为的复杂。

相关文章

  • jvm热点代码检测机制 #jvm运行期优化#

    1. 基于采样的热点探测 采用这种方法的虚拟机会周期性地检查各个线程的栈顶,如果发现某个方法经常出现在栈顶,这个方...

  • 多线程的锁升级原理

    什么是锁升级(锁膨胀)? JVM优化synchronized的运行机制,当JVM检测到不同的竞争状态时,就会根据需...

  • JVM介绍系列文章

    知晓JVM系列(一):对JVM总览知晓JVM系列(二):JVM内存管理机制与优化初探知晓JVM系列(三) :常用的...

  • JVM运行期优化

    一、前言 JVM运行期的优化主要是指程序在编译成字节码之后,JVM通过解释器去解释执行,再针对程序运行的资源占用等...

  • java虚拟机回收机制

    ps: 参考 jvm机制 jvm的新生代里为什么有两个Survivor区FullGC优化实战 JVM 垃圾回收器工...

  • jvm 相关阅读

    相关阅读 JVM性能优化1-JVM简介 JVM性能优化2-编译器 JVM性能优化3-垃圾回收 JVM性能优化4-C...

  • JVM调优

    JVM(Java虚拟机)优化大全和案例实战 JVM 优化经验总结 JVM 数据存储介绍及性能优化 JVM诊断...

  • JVM运行期优化及逃逸分析实战

    运行期优化 楼主最近在网上看到一篇写关于JVM运行期优化的博客,经过整理,现在分享给大家: 我们知道,Java 是...

  • JAVA教程:浅谈JVM的优化

    浅谈JVM的优化 前言 前面我们了解过JVM中堆的GC分代回收机制,在运行Java程序时,我们可以使用JVM的参数...

  • 深入理解JVM之编译优化

    JDK在源码编译阶段将源码编译为JVM字节码,JVM字节码是一种平台无关的中间代码方式,要由JVM在运行期间对其进...

网友评论

      本文标题:jvm热点代码检测机制 #jvm运行期优化#

      本文链接:https://www.haomeiwen.com/subject/kfugfctx.html