Java培训:Java中JIT和JVM的区别

更新时间: 2023-03-12 09:15:06来源: 粤嵌教育浏览量:7919


Java虚拟机(JVM)用于Java运行时环境(JRE)。最初的JVM被设想为字节码解释器。由于性能问题,这可能有点出人意料。许多现代语言都要编译成CPU专用的可执行代码。然而,JVM执行Java程序这一事实有助于解决与基于web的应用程序相关的主要问题。想对JVM有更多了解,建议考虑报名参加Java培训,有明确的学习路线和全面系统的课程,能获得较快提升。

 

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

 

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

 

类加载器:类加载器的目的是加载类文件。它有助于完成三个主要功能:加载、初始化和链接。

 

JVM语言堆栈:Java内存存储本地变量和计算的部分结果。每个线程都有自己的JVM堆栈,在创建线程时创建。调用该方法时,将创建一个新框架,然后将其删除。在java培训中,也有关于JVM内存的学习,学好这部分的知识,可以避免在工作中出现的很多问题。

 

方法区:JVM方法区专门存储Java应用程序的元数据和代码隐藏文件。

 

PC寄存器:当前正在执行的Java虚拟机指令地址由PC寄存器保存。Java中的每个线程都有自己独立的PC寄存器。

 

堆:堆中保存了所有对象、数组和实例变量。此内存在多个线程之间共享。

 

执行引擎:它是一种用于测试软件、硬件或完整系统的软件形式。测试执行引擎从不携带任何有关被测试产品的信息。

 

本地方法库:作为执行引擎的本地方法库需要本地库(CC++),而作为编程框架的本地方法接口是本地方法接口。这使得在JVM中运行的Java代码能够调用库和本机应用程序。此外,本机方法堆栈根据本机库具有本机代码命令。它将存储分配给本机堆或使用任何堆栈类型。参加java培训,可以学到全方位的java知识和技能,而且还有实战项目操作训练,积累项目经验,以便快速上岗。




实时(JIT)编译器

虽然Java是作为一种解释语言开发的,但为了提高性能,Java并没有阻止字节码编译为本地代码。因此,在Java首次发布后不久,HotSpotJVM就发布了。HotSpot中包含一个即时(JIT)字节码编译器。实时(JIT)编译器是JVM的一部分,在逐件需求的基础上,字节码的选定部分被实时编译为可执行代码。也就是说,正如在执行期间所必需的,JIT编译器编译代码。此外,并非所有字节码序列都被编译,只有那些将从编译中受益的字节码序列才被编译。然而,及时的方法仍然大大提高了效率。即使动态编译应用于字节码,可移植性和安全性功能仍然存在,因为JVM仍然控制执行环境。

 

为了理解差异,让我们通过说明JIT的工作方式来深入了解组件。

 

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

 

硬件正在解释代码,而不是JVMJava虚拟机)。这可以提高执行速度的性能。这可以在每个文件、每个函数或任何任意代码片段上完成;代码通常在接近执行时进行编译(因此称为“及时”),然后缓存并在以后重用,而无需重新编译。它执行许多优化:数据分析、从堆栈操作转换为注册表操作、通过注册表分配减少内存访问、消除常见子表达式。若想要更加系统更加详细的学习 JVM 知识,建议参加java培训,有经验丰富的专业讲师面授指导教学,能够帮你更全面了解JVM。


免费预约试听课