Java中的执行引擎是什么?
Java执行引擎是JVM(Java虚拟机)的核心组件,它与JVM的不同内存区域进行通信。此组件用于执行通过类加载器分配到运行时数据区域的字节码。此外,每个Java类文件都通过执行引擎执行,并且在运行的应用程序中存在的每个线程都是虚拟机执行引擎的不同实例。
因此,通过阅读本文,您将更详细地了解执行引擎,但在了解之前,让我们先了解什么是Java虚拟机。
了解Java虚拟机
Java虚拟机(JVM)是一个驻留在计算机上的抽象虚拟机,它为Java字节码提供运行时环境以进行执行。但是,为了执行Java字节码,需要使用执行引擎。
Java运行时环境或JRE是Java虚拟机(JVM)的实现。JVM检查字节码,解释它,并执行相同的字节码以显示输出。
JVM的主要功能是运行编译后的.class文件(即字节码)并产生输出。但是,每个操作系统都有一个不同的JVM,产生的字节码输出在所有操作系统上都是相同的。这意味着在Linux操作系统上生成的字节码能够在Windows操作系统上运行,反之亦然,这使得Java成为一种平台无关的语言。
因此,让我们立即深入本文,了解Java中的执行引擎及其不同的组件。
Java中的执行引擎
如上所述,为了执行Java字节码,使用执行引擎。这是因为,通常情况下,Java字节码将以人类可读的形式编写。因此,通过使用执行引擎,人类可读的字节码将被转换为Java虚拟机中机器可以轻松执行的语言。
为了更改语言,执行引擎包含三个主要子组件,包括:
解释器
JIT编译器
垃圾收集器
让我们详细了解每个组件!
解释器
此组件读取字节码并将其解释(转换)为机器码(原生代码),并以顺序方式执行它们。通过接受文件名参数,此组件从命令行运行应用程序。可以使用以下原型命令:
java <_compiled_file_name_without_extension_>
但是,解释器的缺点是它每次都会转换或解释,即使是相同的方法多次,这反过来会降低系统的性能。因此,为了克服这个问题,在1.1版本中引入了JIT(**Just In Time**)编译器,这将在下面讨论。
JIT(Just In Time)编译器
JIT编译器的主要目的是提高性能。换句话说,它是为了克服解释器执行速度慢的缺点并提高系统性能而引入的。
此外,为了减少编译所需的时间,JIT编译器会同时编译字节码的相似部分。
在运行时,JVM加载类文件,确定其语义,并执行适当的计算。由于解释期间额外的处理器和内存使用导致Java应用程序的运行速度比原生应用程序慢。
JIT编译器通过在运行时将字节码编译为本地机器码来帮助提高Java程序的性能。
当调用方法时,JIT编译器会始终启用并被激活。对于已编译的方法,JVM会直接调用已编译的代码,而不是转换或解释。从理论上讲,如果编译不需要任何处理器时间或内存使用,则原生编译器的速度和Java编译器的速度将相同。
JIT编译需要处理器时间和内存使用。因此,在Java虚拟机启动时,会调用数千个方法。因此,同时编译所有这些方法会严重影响启动时间,即使最终结果是非常好的性能优化。
分析器
JIT编译器的一部分是分析器工具,用于在JVM级别监控Java字节码结构和操作。
垃圾收集器
这是一个程序或执行引擎组件的一部分,它在后台运行并自动管理内存。此组件的主要目的是通过收集和删除未引用的对象来释放堆内存。
总结
在本文结束时,我们希望您对Java中的执行引擎及其不同组件有了更好的了解。
如果您觉得本文有用,请与您的朋友、同事和需要更好地了解执行引擎及其不同组件的人分享。如果您有任何其他疑问,请在下面的评论部分发表您的想法。