☕【Java原理探索】彻底你明白什么是JIT编译器(Just In Time编译器)

本文介绍了Java的JIT编译器,它是如何在运行时提升程序性能的。解释了Java语言的编译器和解释器的区别,并详细讨论了HotSpot虚拟机中的Client Compiler和Server Compiler,以及它们在不同模式下的工作原理。JIT编译器能够在运行过程中编译热点代码为本地机器码,实现更高效的执行,同时具备逆优化能力以应对程序变化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前提概要

  • 我们都知道开发语言整体分为两类,一类是编译型语言,一类是解释型语言。那么你知道二者有何区别吗?编译器和解释器又有什么区别?

  • 这是为了兼顾启动效率和运行效率两个方面。Java程序最初是通过解释器进行解释运行的,当虚拟机返现某个方法或代码块的运行特别频繁时,就会把这段代码标记为热点代码,为了提供热点代码的运行效率,在运行时,虚拟机就会把这些代码编译成与本地平台相关的机器码。并进行各种层次的优化。

编译器和解释器

  • Java编译器(javac)的作用是将java源程序编译成中间代码字节码文件,是最基本的开发工具。
  • Java解释器(java)(英语:Interpreter),又译为直译器,是一种电脑程序,能够把高级编程语言一行一行直接转译运行。解释器不会一次把整个程序转译出来,只像一位“中间人”,每次运行程序时都要先转成另一种语言再作运行,因此解释器的程序运行速度比较缓慢。 它每转译一行程序叙述就立刻运行,然后再转译下一行,再运行,如此不停地进行下去。

  1. 当程序需要首次启动和执行的时候,解释器可以首先发挥作用,一行一行直接转译运行,但效率低下。
  2. 当多次调用方法或循环体时JIT编译器可以发挥作用,把越来越多的代码编译成本地机器码,之后可以获得更高的效率(占内存),此时就有了智能化的编译器(JIT编译器)
解释器与编译器的交互:

**HotSpot虚拟机中内置了两个即时编译器,分别称为Client Complier和Server Complier,

它会根据自身版本与宿主机器的硬件性能自动选择运行模式,用户也可以使用"-client"或 "-server"参数去强制指定虚拟机运行在Client模式或Server模式**

什么是JIT编译器

  • 即时(Just-In-Time)编译器是Java运行时环境的一个组件,它可提高运行时Java应用程序的性能。JVM中没有什么比编译器更能影响性能,而选择编译器是运行Java应用程序时做出的首要决定之一。

  • 当编译器做的激进优化不成立,如载入了新类后类型继承结构出现变化。出现了罕见陷阱时能够进行逆优化退回到解释状态继续运行。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值