当前位置: 首页 > 面试题库 >

JVM是编译器还是解释器?

成和悌
2023-03-14
问题内容

我对JVM有一个非常基本的问题:它是编译器还是解释器?

如果它是解释器,那么JVM内部存在的JIT编译器怎么办?
如果两者都不是,那么JVM到底是什么?(我不希望将字节码转换为机器特定的代码等jVM的基本定义。)


问题答案:

首先,让我们对以下术语有一个清晰的认识

Javac是Java编译器-将Java代码编译为 Bytecode

JVM是Java虚拟机-运行/解释/将字节码转换为本 机代码

JIT是即时编译器-在 运行 本机代码之前,将给定的字节码指令序列在 运行时 编译为机器代码。它的主要目的是对性能进行重大优化。

现在,让我们找到您问题的答案。

1)JVM: is it a compiler or an interpreter? - 答案: 口译员

2)what about JIT compiler that exist inside the JVM? - 答:
如果您完整阅读了此回复,则可能现在知道了

3)what exactly is the JVM? - 答:

  • JVM是驻留在您的RAM中的虚拟平台
  • 它的组件, 类加载器.class文件 加载 到RAM中
  • JVM中的 字节码验证程序 组件检查 代码 中是否存在任何访问限制冲突。(这是Java安全的原理之一)
  • 接下来, 执行引擎 组件将字节码转换为可执行的机器代码

希望这对您有所帮助。



 类似资料:
  • 问题内容: PHP是编译还是解释? 问题答案: PHP是一种解释型语言。可以解释PHP的二进制文件已编译,但是您编写的文件却被解释。

  • 请注意,我的问题是关于JVM解释器,而不是JIT编译器。JIT编译器将java字节码转换为本机代码。因此,这必须意味着JVM中的解释器不会将字节码转换为机器码。因此,问题是:从本质上讲,口译员做什么?如果有人能帮我用一个简单的字节码示例来回答这个问题,相当于1 1=2,即解释器在执行这个加法操作时做了什么?(我的隐含问题是,如果解释器不翻译为机器代码,那么哪个CPU执行添加操作,那么该操作是如何执

  • 问题内容: 过去,我使用C 作为编程语言。我知道用C 编写的代码会经过编译过程,直到成为目标代码“机器代码”为止。 我想知道Java在这方面如何工作。用户编写的Java代码如何由计算机运行? 问题答案: Java实现通常使用两步编译过程。Java编译器将Java源代码编译为字节码。字节码由Java虚拟机(JVM)执行。现代JVM使用称为即时(JIT)编译的技术将字节码编译为硬件CPU在运行时即时理

  • 我读过一些关于编译程序和解释器之间差异的答案。他们中的大多数人在解释口译员的工作方式时会说: 它每次执行一行程序,并在运行它之前翻译每一行:它翻译第一行并运行它,然后翻译第二行并运行它,等等。 (来自解释器/编译器的工作原理) 这就是让我困惑的地方——从高级语言到机器代码的翻译被称为编译。根据定义(https://en.wikipedia.org/wiki/Compiler). 那么,说高级语言的

  • 据我所知,JIT将字节码编译成运行速度更快的本机代码。因此,根据我的信念,我的问题的答案应该是1。翻译成机器代码2。解释字节码。因为解释代码意味着执行代码。但我发现答案恰恰相反!谁能解释一下。。。提前感谢

  • 问题内容: 为什么我们说Java是一种编译和解释语言? (编译和解释)这样做有什么好处? 问题答案: Java在编译时被编译为中间的“字节码”。这与像C之类的语言在编译时被编译为机器语言相反。Java字节代码无法像编译的C代码那样直接在硬件上执行。相反,字节码必须在运行时由JVM(Java虚拟机)解释才能执行。像C这样的语言的主要缺点是,当编译该二进制文件时,该二进制文件将仅在一种特定的体系结构(