Java虚拟机(JVM)用于Java运行时环境(JRE)。最初的JVM被设想为字节码解释器。由于性能问题,这可能有点出人意料。许多现代语言都要编译成CPU专用的可执行代码。然而,JVM执行Java程序这一事实有助于解决与基于web的应用程序相关的主要问题。想对JVM有更多了解,建议考虑报名参加Java培训,有明确的学习路线和全面系统的课程,能获得较快提升。
JVM执行Java程序这一事实也有助于使其稳定。由于JVM负责,程序的执行由它控制。因此,JVM可以构建一个称为沙盒的有限执行区域,其中包含软件,从而防止系统获得无限访问。Java语言中存在的一些限制也改善了保护。Java的JVM架构包括类加载器、执行引擎、内存字段等。
为了理解差异,让我们通过说明JVM的工作来深入了解组件。
类加载器:类加载器的目的是加载类文件。它有助于完成三个主要功能:加载、初始化和链接。
JVM语言堆栈:Java内存存储本地变量和计算的部分结果。每个线程都有自己的JVM堆栈,在创建线程时创建。调用该方法时,将创建一个新框架,然后将其删除。在java培训中,也有关于JVM内存的学习,学好这部分的知识,可以避免在工作中出现的很多问题。
方法区:JVM方法区专门存储Java应用程序的元数据和代码隐藏文件。
PC寄存器:当前正在执行的Java虚拟机指令地址由PC寄存器保存。Java中的每个线程都有自己独立的PC寄存器。
堆:堆中保存了所有对象、数组和实例变量。此内存在多个线程之间共享。
执行引擎:它是一种用于测试软件、硬件或完整系统的软件形式。测试执行引擎从不携带任何有关被测试产品的信息。
本地方法库:作为执行引擎的本地方法库需要本地库(C,C++),而作为编程框架的本地方法接口是本地方法接口。这使得在JVM中运行的Java代码能够调用库和本机应用程序。此外,本机方法堆栈根据本机库具有本机代码命令。它将存储分配给本机堆或使用任何堆栈类型。参加java培训,可以学到全方位的java知识和技能,而且还有实战项目操作训练,积累项目经验,以便快速上岗。
实时(JIT)编译器
虽然Java是作为一种解释语言开发的,但为了提高性能,Java并没有阻止字节码编译为本地代码。因此,在Java首次发布后不久,HotSpotJVM就发布了。HotSpot中包含一个即时(JIT)字节码编译器。实时(JIT)编译器是JVM的一部分,在逐件需求的基础上,字节码的选定部分被实时编译为可执行代码。也就是说,正如在执行期间所必需的,JIT编译器编译代码。此外,并非所有字节码序列都被编译,只有那些将从编译中受益的字节码序列才被编译。然而,及时的方法仍然大大提高了效率。即使动态编译应用于字节码,可移植性和安全性功能仍然存在,因为JVM仍然控制执行环境。
为了理解差异,让我们通过说明JIT的工作方式来深入了解组件。
通过解释字节码,JVM的标准实现降低了程序的执行速度。JIT编译器在运行时与JVM交互以提高性能,并将适当的字节码序列编译成本机代码。
硬件正在解释代码,而不是JVM(Java虚拟机)。这可以提高执行速度的性能。这可以在每个文件、每个函数或任何任意代码片段上完成;代码通常在接近执行时进行编译(因此称为“及时”),然后缓存并在以后重用,而无需重新编译。它执行许多优化:数据分析、从堆栈操作转换为注册表操作、通过注册表分配减少内存访问、消除常见子表达式。若想要更加系统更加详细的学习 JVM 知识,建议参加java培训,有经验丰富的专业讲师面授指导教学,能够帮你更全面了解JVM。