jvm执行引擎笔记

执行引擎

在这里插入图片描述

概述

虚拟机的执行引擎是由软件自行实现的,能够执行那些不被硬件直接支持的指令集格式。其主要任务是将字节码指令解释/编译为操作系统可以执行的机器指令。

代码编译和执行过程

在这里插入图片描述

机器码、指令、汇编语言

在这里插入图片描述

解释器

解释器真正意义上所承担的角色就是一个运行时“翻译者”,将字节码文件中的内容“翻译”为对应平台的本地机器指令。当一条字节码指令被解释执行完成后,接着再根据PC寄存器中记录的下一条需要被执行的字节码指令执行解释操作。

JIT编译器

又称为即时编译器,其将整个函数体编译为机器码,每次函数执行时,只执行编译后的机器码即可,这种方式可以使执行效率大幅度提升。

在这里插入图片描述
热点代码概述
1.一个被多次调用的方法或者是一个循环次数较多的循环体都可以被称为“热点代码”。热点代码会通过JIT编译器翻译成机器指令,由于这种编译发生在方法执行过程中,所有又称为“栈上替换”(因为方法的调用是发生在栈上的)。
2.一个方法要被调用多少次或者一个循环体要被执行多少次才会成为“热点代码”,是通过热点探测功能决定的。
3.目前HotSpot采用的热点探测方式是基于计数器的热点探测。HotSpot会为每一个方法建立2个不同类型的计数器,分别为方法调用计数器回边计数器

  • 方法调用计数器:统计方法的调用次数。
  • 回边计数器:统计循环体执行的循环次数。
    4.计数器默认的阈值在Client模式下是1500次,在Server模式下是10000次,超过这个阈值就会触发JIT编译。可以通过**-XX:CompileThreshold**来设置。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值