Java虚拟机(JVM)

Java虚拟机(JVM)用于java运行环境(JRE)中。最初的JVM被设想为一个字节码解释器。由于性能问题,这可能会让人感到有点惊讶。许多现代语言都要被编译成针对CPU的可执行代码。然而,JVM执行Java程序的事实,有助于解决与基于网络的应用程序有关的主要问题。
Java中JIT和JVM的区别

JVM执行Java程序的事实也有助于使其稳定。由于JVM负责,程序执行由它控制。因此,JVM可以构建一个有限的执行区域,称为包含软件的沙箱,从而阻止系统获得无限制的访问。现有的 Java 语言中的一些限制也改进了保护。Java的JVM架构包括类加载器,执行引擎,内存字段等。

为了理解差异,通过说明JVM的工作来深入研究组件。

  • 类加载器: 类加载器的目的是加载类文件。它帮助完成三个主要功能: 加载、初始化和链接。
  • JVM语言堆栈: Java内存存储局部变量,以及计算的部分结果。每个线程都有自己的JVM堆栈,在创建线程的时候创建。当方法被调用时,一个新的框架被创建,然后被移除。
  • 方法区: JVM方法区专门用于存储Java应用程序的元数据和代码后台文件。
  • PC寄存器: 当前正在执行的Java虚拟机指令地址由PC寄存器保存。Java中的每个线程都有自己独立的PC寄存器。
  • 堆:在堆中保存所有对象、数组和实例变量。这个内存在几个线程之间共享。
  • 执行引擎:它是一种用于测试软件、硬件或完整系统的软件形式。测试执行引擎从不携带任何关于被测试产品的信息。
  • 作为执行引擎的原生方法库需要原生库(C,C++)和原生方法接口,这是一个编程框架,是原生方法接口。这使得在JVM中运行的Java代码可以调用库和本地应用程序。同时,本地方法堆有一个取决于本地库的本地代码命令。它将存储分配给本地堆或使用任何堆栈类型。

JVM的区别

及时编译器(JIT)

虽然Java是作为一种解释型语言来开发的,为了提高性能,Java没有任何东西可以阻止字节码在飞行中编译成本地代码。由于这个原因,在Java最初发布不久,HotSpot JVM就被发布了。HotSpot中包括一个及时(JIT)字节码编译器。及时编译器是JVM的一部分,在逐件需求的基础上,字节码的选定部分被实时编译成可执行代码。也就是说,在执行过程中,JIT编译器会对代码进行必要的编译。此外,并不是所有的字节码序列都被编译,只有那些将从编译中受益的字节码。然而,准时制的方法仍然产生了效率低下的重大提升。即使动态编译被应用于字节码,可移植性和安全功能仍然存在,因为JVM仍然控制着执行环境。

为了理解差异,让我们通过说明JIT的工作情况来挖掘其组成部分。

解释字节码时,JVM的标准实现会降低程序的执行速度。JIT编译器在运行时与JVM交互,以提高性能,并将适当的字节码序列编译为本地机器代码。

硬件在解释代码,而不是JVM(Java虚拟机)。这可以导致执行速度的性能提高。这可以在每个文件、每个函数上进行,也可能在任何任意的代码片段上进行;代码通常在接近执行时被编译(因此被称为 “即时”),然后被缓存并在以后重新使用,而不必重新编译。它进行了许多优化:数据分析、从堆栈操作到注册表操作的转换、通过注册表分配减少内存访问、消除常见的子表达式。

因此,从上述知识中,下表所提到的它们之间的结论性差异上:

JVM JIT
JVM是Java虚拟机的缩写。 JIT是即时编译的意思。
JVM的出现是为了管理系统内存,并为基于Java的应用程序提供一个可运输的执行环境 JIT的发明是为了在JVM最初发布多年后提高其性能。
JVM由许多其他组件组成,如堆栈区、堆区等。 JIT是JVM的组件之一。
JVM将完整的字节码编译成机器码。 JIT只将可重用的字节码编译为机器码。
JVM提供平台独立性。 JIT提高了JVM的性能。

Java中JIT和JVM的区别

欢迎任何形式的转载,但请务必注明出处,尊重他人劳动成果。
转载请注明:文章转载自 有区别网 [http://www.vsdiffer.com]
本文标题:Java中JIT和JVM的区别
本文链接:https://www.vsdiffer.com/vs/difference-between-jit-and-jvm-in-java.html
免责声明:以上内容仅代表 个人看法、理解、学习笔记、总结和研究收藏。不保证其正确性,因使用而带来的风险与本站无关!如本网站内容冒犯了您的权益,请联系站长,邮箱: ,我们核实并会尽快处理。