JVM是否将字节码解释为汇编语言

时间:2016-11-28 17:09:10

标签: java jvm

我对jvm很困惑。
  jvm究竟做什么需要bytycode并解释为本机代码是本机代码汇编语言?

3 个答案:

答案 0 :(得分:5)

本机代码(或机器代码)是编译汇编语言的内容。扩展宏,然后将助记符 OP代码转换为二进制机器代码。 JIT不使用宏,它直接生成机器代码(没有汇编程序)。

答案 1 :(得分:4)

  

是本机代码汇编语言吗?

汇编语言是一种将汇编(由汇编程序)编写的代码编写到机器代码中的方法,这是写入可执行文件等的代码。也就是说,汇编代码是人类的源代码,只是处于非常低的水平;机器代码是在该源代码上运行汇编程序的结果。 (这类似于编写C ++等高级语言并使用编译器编译到机器代码时。)

  

jvm究竟做了什么需要bytycode并解释为本机代码

可以编写只能解释字节码的JVM ,但现代JVM不会这样做;他们有一个内置的即时编译器(JIT),它接收字节码,并且有效地将其即时组装成机器代码。实际上,Sun的JVM有一个两阶段JIT:一个阶段运行得非常快(因此应用程序和类在运行时可以快速转换为机器代码,以避免启动延迟),另一个阶段就是进行积极优化,它在代码中识别“热点”(运行很多的代码)时使用(这样性能关键代码可以快速运行)。

现代JVM从.class文件中读取字节码,通过JIT运行它以将其编译为机器代码,并让计算机运行该机器代码。在这样做的同时,一个好的监控热点并积极优化它们,创建更高效​​的新的替代机器代码。

答案 2 :(得分:0)

  • JVM不是平台独立的,而是JVM提供的平台 Java代码的独立功能(字节代码)。
  • 当字节代码是 在编写您的书面代码后生成,它可以被带到任何 由于JVM,可以运行它的操作系统 (特定于OS)将字节代码转换为机器 语言取决于操作系统。
  • 所以,是的,字节码(.class文件)是 由JVM通过解释转换为机器语言(本机代码) 字节码。