JVM - 【执行引擎】解释器与JIT

执行引擎 - 解释器与JIT


一:什么是解释器与JIT?

1> 解释器

解释器将字节码直接翻译为机器指令执行(Java);
在Python中不存在字节码,cPython会直接将python程序翻译为机器指令执行。

2> JIT

Just-In-Time 即时编译器,属于后端编译器(程序运行时动态编译),常与解释器配合使用,互惠互利。

二:HotSpot VM执行引擎策略

JVM执行引擎     HotSpot虚拟机执行引擎采用解释器与JIT混合使用策略,程序响应速度快。
在执行过程中,执行引擎会进行热点探测以找出热点代码,并对热点代码进行即时编译得到机器指令并缓存当前热点代码(缓存的热点代码存储于Metaspace),当热点代码被再次调用时,机器指令会完成栈上替换从而减少方法块的重复解释提高程序执行效率。

     J Rocket虚拟机(2008年被Oracle收购,2014年发布JDK1.8,Perm->Metaspace)执行引擎中没有解释器,程序响应/启动速度较慢,但是一旦程序运行起来效率将很高(J Rocket是世界上运行最快的虚拟机

三:热点探测

  • 方法调用计数器(Invocation Counter)
    • 统计方法被调用次数
      • 计数器会有半衰期,可通过-XX:+/-UseCounterDecay选择开启或关闭
  • 回边计数器 (Back Edge Counter)
    • 统计方法内部循环体执行次数
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值