HotSpot的解释器和JIT编译器

什么是解释执行,什么是编译执行,有什么区别

要理解解释器和编译器,就要先知道什么是解释执行,什么是编译执行

  • 编译执行:顾名思义,先编译再执行,所以就需要编译器现将代码编译成机器码,然后在进行执行,因为是整体编译,所以会产生编译后的机器码文件
  • 解释执行:解释器会将代码一句一句的进行解释,每解释一句就运行一句,在这个过程中,不会产生机器码文件

解释运行优缺点分析

  • 从启动效率来看解释运行不需要进行编译操作,所以启动效率更快
  • 从运行效率角度来看,编译运行只需要编译一次,而解释运行每次都需要经过解释的过程,所以编译执行的效率更高
  • 从内存角度来看,编译执行需要生成编译后的字节码文件,而解释运行则不需要

HotSpot中JIT的两种模式

 HotSpot中内置了两种JIT编译器,分别是Client 和Server两个模式,可以通过java -version进行查看

解释器的工作机制和原理

 主要分为两个模块,一个是Interpreter模块,这个模块实现了解释器的核心功能;还有一个Code模块,用来管理运行时生成的本地机器指令,开发人员可以手动设置HotSpot运行时用于缓存本地机器指令的缓存区代销,这个空间和方法区一样被称为非堆内存

JIT编译器的工作

 这里引用一张书里面的图来进行说明

 

热点探测

简单来说就是将多次被调用的方法或者是内部循环次数较多的循环体便以为本地机器指令,这些代码就称之为热点代码

如何进行热点代码探测

  • 采用采样的方式进行探测
  • 采用计数器的方式,也就是统计方法执行次数,在HotSpot中采用的就是计数器

 

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值