Java 如果JIT正在执行到机器指令的字节码转换,那么JVM的用途是什么
我真的很难理解下面的事情 以前我知道: 编译Java程序时,Java 如果JIT正在执行到机器指令的字节码转换,那么JVM的用途是什么,java,jvm,jit,Java,Jvm,Jit,我真的很难理解下面的事情 以前我知道: 编译Java程序时,将生成class文件。在这种情况下,代码的形式是字节。然后,JVM将把字节码翻译成机器可以理解的格式 现在我明白了 实时(JIT)编译器是运行时的一个特性 解释器,而不是每次一个方法 调用时,将字节码编译为机器码 运行机器的说明 所以这里JIT将字节码转换成机器指令。那么JVM的用途是什么呢。我们可以通过JIT实现这一点。据我所知,JIT只是为了提高JVM的性能。更清楚地说: JVM执行以下操作: 它位于操作系统的顶部并提供抽象 在编译
将生成class
文件。在这种情况下,代码的形式是字节。然后,JVM
将把字节码翻译成机器可以理解的格式
现在我明白了
实时(JIT)编译器是运行时的一个特性
解释器,而不是每次一个方法
调用时,将字节码编译为机器码
运行机器的说明
所以这里JIT将字节码转换成机器指令。那么JVM的用途是什么呢。我们可以通过JIT实现这一点。据我所知,JIT只是为了提高JVM的性能。更清楚地说:
JVM执行以下操作:
它位于操作系统的顶部并提供抽象
在编译的java程序和操作系统之间。这边,java
编译后的程序不必担心它必须使用哪个平台
工作Java程序将代码编译成字节码,JVM可以
理解并执行
准时制
当JVM编译类文件时,它不会完成整个类
文件它只根据需要编译其中的一部分。这避免了沉重的负担
解析完整的源代码。这种类型的编译称为
JIT或即时编译。
JVM是依赖于平台(OS)的代码生成
JIT面向平台,生成本机字节码,因此比JVM更快:)
它通过优化为JVM及时编译它。JIT只是JVM的一部分。其他部分包括字节码解释器、类加载验证和链接机制,以及对反射、I/O等内容的本机代码支持 从这个意义上讲,JIT根本不会使JVM运行得更快。相反,它使Java代码运行得更快。。。如果JVM只是对其进行解释,则情况会更糟 实际上,JVM确实是从解释字节码开始的。一段时间后,JVM然后使用其JIT编译器将大量使用的方法编译为本机代码,使用在解释时收集的统计信息来针对手头的问题调整代码 顺便说一句,你引用的这部分文字既笨拙又不准确: 实时(JIT)编译器是运行时解释器的一项功能
事实上,JIT不是解释器的一个特性。相反,JIT是与解释器一起工作的JVM的功能 Java虚拟机(JVM)提供了运行Java程序的整个环境。它与操作系统集成,加载类并运行程序。即时编译器(JIT)只是一个小部件,可以禁用(-Xint),但启用后,可以有效地提高性能。有一些JVM的实现不包括JIT,也有一些实现是通过将Java预编译为机器代码来工作的,就像传统语言一样,比如C或C++。< /p>但是我看到语句JIT编译了整个类文件。但是在你的语句中JVM正在编译。explain@Anusha是的…JVM做编译部分[逐行]是java的本机解释器。但是JIT是可选的,它也编译,而不是所有的东西,只是一个必要的方法/函数。例如,JIT编译器不检查java边界条件,例如空指针或数组越界异常。JIT编译器知道它有空指针异常的唯一方法是通过操作系统发出的信号。这是错误的。javac Java编译器解析Java源代码并将其编译为Java字节码(独立于机器),即.class文件。JIT编译器将字节码编译为本机代码(特定于CPU arch)。JIT输出机器代码仍然执行边界检查和Java异常处理。这里有白皮书或参考答案吗?我肯定有。如果你能找到它们,让我知道,我会添加它们。这并不能回答问题。