我对jvm很困惑。
jvm究竟做什么需要bytycode并解释为本机代码是本机代码汇编语言?
答案 0 :(得分:5)
本机代码(或机器代码)是编译汇编语言的内容。扩展宏,然后将助记符 OP代码转换为二进制机器代码。 JIT不使用宏,它直接生成机器代码(没有汇编程序)。
答案 1 :(得分:4)
是本机代码汇编语言吗?
汇编语言是一种将汇编(由汇编程序)编写的代码编写到机器代码中的方法,这是写入可执行文件等的代码。也就是说,汇编代码是人类的源代码,只是处于非常低的水平;机器代码是在该源代码上运行汇编程序的结果。 (这类似于编写C ++等高级语言并使用编译器编译到机器代码时。)
jvm究竟做了什么需要bytycode并解释为本机代码
可以编写只能解释字节码的JVM ,但现代JVM不会这样做;他们有一个内置的即时编译器(JIT),它接收字节码,并且有效地将其即时组装成机器代码。实际上,Sun的JVM有一个两阶段JIT:一个阶段运行得非常快(因此应用程序和类在运行时可以快速转换为机器代码,以避免启动延迟),另一个阶段就是进行积极优化,它在代码中识别“热点”(运行很多的代码)时使用(这样性能关键代码可以快速运行)。
现代JVM从.class
文件中读取字节码,通过JIT运行它以将其编译为机器代码,并让计算机运行该机器代码。在这样做的同时,一个好的监控热点并积极优化它们,创建更高效的新的替代机器代码。
答案 2 :(得分:0)