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

台式机上的JVM是否使用JIT编译?

颜文昌
2023-03-14
问题内容

我经常碰到声称Java被解释的文章。我知道Oracle的HotSpot
JRE提供即时编译,但是大多数台式机用户都是这种情况吗?例如,如果我通过http://www.java.com/en/download下载Java
,它将包括JIT编译器吗?


问题答案:

是的,一点没错。声称Java被解释的文章通常由不了解Java的工作原理或不了解解释的含义的人撰写。

话虽如此,HotSpot 有时 解释代码-
这是一件好事。绝对有任何应用程序的部分(通常是在启动过程中)仅执行一次。如果您能以比JIT编译快的速度进行解释,那为什么还要打扰开销呢?另一方面,我对“
Java被解释”文章的经验是,这 不是 它们的意思:)

编辑:要理解TJ
Crowder的观点:是的,从java.com下载的JVM将是HotSpot。但是,HotSpot有两种不同的JIT:服务器和台式机。总而言之,桌面JIT旨在快速启动应用程序,而服务器JIT则更注重于长期的高性能:服务器应用程序通常运行很长时间,因此花费大量时间优化它们从长远来看会有所回报。



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

  • 问题内容: 可以说,我的Java程序的瓶颈确实是一些紧密的循环,无法计算一堆矢量点积。是的,我已经进行了概要分析,是的,它是瓶颈,是的,它很重要,是的,这就是算法的方式,是的,我运行了Proguard来优化字节码,等等。 实质上,这是点产品。与之类似,我有两个,我需要计算成对乘积之和。我知道处理器指令集可以像SSE或MMX一样快速且批量地执行此类操作。 是的,我可能可以通过在JNI中编写一些本机代

  • 我想你们大多数人都知道在Java语言中是一个保留的关键字,但实际上并没有被使用。你们可能也知道是一个Java虚拟机(JVM)操作码。我认为Java、Scala和静态编程语言的所有复杂的控制流结构都是在JVM级别上使用和、、等的某种组合来实现的。 查看JVM规范https://docs.oracle.com/javase/specs/jvms/se7/html/jvms-6.html#jvms-6.

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

  • 我知道这依赖于JVM,每个虚拟机都会选择实现它,但我想了解总体概念。 据说对于JVM用来执行Java程序的内存段 Java堆栈 不一定用连续内存实现,并且可能都实际分配在操作系统提供的一些堆内存上,这就引出了我的问题。 完全使用JIT机制并将字节码方法编译为本机机器码方法的JVM将这些方法存储在某个地方,那会在哪里?执行引擎(通常用C/C编写)将不得不调用这些JIT编译函数,然而内核不应该允许程序

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