Java 中 JIT 和 JVM 的区别
当我们开始学习 Java 时,我们经常会遇到 JIT 和 JVM 这样的术语。很好地理解这两个术语之间的关系和区别至关重要,因为它们是 Java 编程语言中基本概念的一部分。JVM 是 Java 运行时环境的主要组件,用于执行 Java 字节码,而 JIT 是 JVM 中提供的编译器。本文旨在解释 JIT 和 JVM 之间的区别。
Java 中的 JIT 与 JVM
JVM
它是 Java 虚拟机的缩写。名称本身表明它是不实际存在的。JVM 是 Java 运行时环境的一个依赖于平台的软件组件。但是,它可以执行编译成 Java 字节码的不同平台的任何程序,即使是使用其他编程语言编写的程序并随后转换为字节码的程序。在这里,平台是指各种操作系统,例如 Mac 和 Windows。Java 字节码是 Java 源代码的中间表示形式,由 Javac 编译器编译。
除了为运行 Java 应用程序提供平台无关且安全的环境外,JVM 还管理内存分配、垃圾回收、异常处理、线程以及 Java 语言的其他功能。
以下几点总结了 JVM 执行的任务:
加载代码。
代码验证。
代码执行。
提供安全的运行时环境。
JIT
它是 Just In Time Compiler(即时编译器)的缩写。它被称为 Java 虚拟机的核心。它通过同时编译具有类似功能的字节码部分来提高 JVM 的性能。此过程减少了在运行时将字节码转换为机器特定代码所需的总时间。
JIT 分析字节码以识别热点,即比其他部分更频繁执行的代码段。然后它将这些热点编译成本地代码并将其缓存以供将来使用。这减少了解释开销,从而提高了执行速度。
请记住,JIT 是 JVM 的可选功能,默认情况下它是启用的,但我们可以使用命令行选项或系统属性来启用或禁用它。JVM 的不同实现可能具有不同的 JIT 编译器,并具有不同的优化技术。
JIT 和 JVM 的区别
从以上讨论中,我们可以得出 JIT 和 JVM 之间的以下区别:
JIT |
JVM |
---|---|
它是一个编译器。 |
它是一个解释器。 |
它是一个可选组件,可以被使用也可以不被使用。 |
它不是一个可选组件。 |
JIT 提供特定于平台的优化。 |
JVM 为 Java 应用程序提供平台独立性和可移植性。 |
它是 JVM 的一部分,可以提高其性能。 |
它是 JRE 的一部分,用于读取和运行字节码。 |
它仅将字节码的可重用部分转换为机器码。 |
它将字节码转换为机器码。 |
结论
大多数公司在工作面试中要求候选人解释 JIT 与 JVM。但是,新的 Java 开发人员经常会混淆虚拟机和即时编译器。本文解释了这两个概念之间的区别。两者协同工作,为 Java 应用程序提供快速、安全和可靠的执行环境。JVM 确保 Java 程序可以在任何平台上运行而无需任何修改,另一方面,JIT 提高了 JVM 的性能。