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

JIT和JAVA解释器是一起手动执行任务,还是JIT先完成任务?

廖招
2023-03-14

根据我的理解,如果Java解释器单独开始逐行执行字节码,那么性能将很慢,因此JIT将出现在代码优化中,以加快代码的执行。

JIT编译器优化代码,java解释器逐行翻译优化的代码。由于JIT只在运行时运行,所以我们不会得到任何二进制输出。一旦解释器翻译,就会产生二进制代码。

---现在我的问题是,JIT和JAVA解释器一起工作吗?或者,jit编译器首先工作,然后java解释器开始工作?

请确认这一点?

共有2个答案

扈高逸
2023-03-14

java运行你的程序时,它会解释字节码并运行它。如果它检测到某个特定的代码非常频繁地运行,即时编译器将启动,字节码将被编译成特定于平台的代码,适用于代码运行的任何平台(即机器代码)。

对于JIT编译器编译的代码,直接使用编译后的代码而不是字节码,因此不需要解释(这就是为什么它更快的原因)。

执行JIT编译会一次性影响性能,因此java只对频繁运行的代码执行JIT编译。

黄骏喆
2023-03-14

当Java运行时启动时,它将使用解释器运行字节码。由于方法被反复调用,它们将被编译为更快的版本。如果调用次数更多,编译速度会更快。

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

  • 自从 OpenResty 1.5.8.1 版本之后,默认捆绑的 Lua 解释器就被替换成了 LuaJIT,而不再是标准 Lua。单从名字上,我们就可以直接看到这个新的解释器多了一个 JIT,接下来我们就一起来聊聊 JIT。 先看一下 LuaJIT 官方的解释:LuaJIT is a Just-In-Time Compilerfor the Lua programming language。 Lua

  • 我已经创建了3个任务。Task3取决于Task1和Task2的结果。在调试代码时,它会正确执行,但在运行应用程序时,Task3会在Task1和Task2完成之前执行。 示例代码: 提前谢谢。

  • 在互联网上搜索了一段时间后,我没有找到一个完美的答案,即JVM应该根据哪个参数(或标志)来决定是使用JIT编译字节码并运行它,还是解释字节码。 简而言之,这个选项是否有任何默认值,意味着如果我说 没有其他参数可以运行什么,JIT或解释器? 这个问题因过于宽泛而被搁置,因此为了缩短它,让我澄清一下,我不想了解JIT或解释器是如何工作的,也不想了解他们如何决定解释或使用JIT的“过程”。我只想知道在做

  • 问题内容: 我很简单(或任何具有的任务) 现在,当我运行时,我总是看到任务正在执行或打印输出 为什么内部任务总是有输出? 问题答案: 如果您具有以下代码: 您正处于任务的 配置 阶段。此阶段在脚本评估期间运行。如果要在执行任务时打印某些内容,则需要为任务添加 操作 。 看起来像: 运行任务时将评估这段代码。与在Task的对象上调用方法完全相同。您可以添加许多操作。 编辑 我也强烈建议您阅读此博客文

  •  说明 调用方法1: $.f2eAct.task(el,options); 函数说明: 该方法完成主要调用joinAndFinish完成任务,会根据接口返回的奖品类型显示不同文案,如卡玛、实物、谢谢参与等。 当获取的奖品数量大于1时,会默认触发 $(".js-package").click(); 事件,所以需要在JS里定义.js-package点击方法。 使用的时候需要在相应dom元素添加 da