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

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

前提概要

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

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

编译器和解释器

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

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

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

解释器与编译器的交互:

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

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

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

什么是JIT编译器

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

  • <

你可能感兴趣的:(java,程序员,java)