当前位置: 首页 > 知识库问答 >
问题:

使用JIT编译器,什么是第一位的?翻译成机器代码还是解释字节码?

柯波娃
2023-03-14

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

共有1个答案

朱锐
2023-03-14

一旦您有了字节码序列的机器代码(正如您所指出的,它应该比解释更快),继续解释该字节码序列(*)就没有意义了。在后台运行编译或尚未启动时进行解释更有用(无论出于何种原因——一个常见的情况是:代码执行的频率不足以被认为值得编译)。

(*)实际上,一些JIT编译器确实非常专门化机器代码,以至于它对某些代码路径或输入无效,并且在发生这些情况时不得不回退到解释/重新编译。甚至其他JIT编译器有时也会重新编译代码,这可能会也可能不会导致暂时返回解释。但总的来说,如果代码适用并且更快(总是应该的),那么不使用它是没有意义的。

 类似资料:
  • 所有编程语言都被翻译成机器代码,然后由硬件解释器执行。但是什么翻译译码器的代码,例如编译器代码和解释器代码?编译器翻译源代码,但编译器也用某种语言编写,那么什么翻译编译器代码/代码呢? 谢谢

  • 问题内容: 我对JVM有一个非常基本的问题:它是编译器还是解释器? 如果它是解释器,那么JVM内部存在的JIT编译器怎么办? 如果两者都不是,那么JVM到底是什么?(我不希望将字节码转换为机器特定的代码等jVM的基本定义。) 问题答案: 首先,让我们对以下术语有一个清晰的认识 是Java编译器-将Java代码编译为 Bytecode 是Java虚拟机-运行/解释/将字节码转换为本 机代码 是即时编

  • 我读到,java源代码被编译成“字节码”,然后通过JIT再次“编译”成“机器码”。也就是说,源代码首先编译成独立于平台的字节码,然后再次编译成特定于机器的代码。那么为什么它同时被称为解释语言和编译语言呢?解释发生在哪里?

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

  • 我有一个关于JVM(Java虚拟机)和JIT(即时)的问题。据我所知,JVM将一个字节码(来自. class扩展文件)作为输入并解释这个字节码。问题是: 当我们说解释时,是指将此字节码转换为机器可读代码(否则编译)? 因此,如果JVM将字节码“编译”为机器可读代码和JIT做基本相同的事情(将字节码转换为机器可读代码(否则编译)),那么使用JIT的优势是什么? 谢谢你的回答。

  • 我试图理解Java源代码是如何执行的,我对JVM中的JIT编译器究竟是什么感到困惑。首先,让我告诉您我是如何理解从Java源代码到在计算机上执行机器代码的过程的。也许,我在这一过程中误解了一些导致混淆的东西。 步骤如下: 源代码被编译成字节码(.class文件) 现在,根据维基百科关于JVM的文章,更具体地说是“字节码解释器和实时编译器”部分,为了执行Java字节码,您需要一个解释器(但我们有一个