请教JAVA一个即时编译的问题

JAVA既然采用的是即时编译器,为什么不一次编译完之后,就把所有代码翻译成当前机器上得所有机器指令,而是要针对热代码才翻译成机器指令,全部翻译成机器指令不是更快吗,也达到平台无关性

全部翻译成机器指令,哪怕实际上这些部分并没有执行到

你认为这会更快?追问

只是觉得,就算有些代码不怎么执行,全部翻译成机器指令,字节码文件也不见得会大多少,而且也会有c++的速度

追答

字节码文件跟机器指令没关系,字节码文件不会包含机器指令,因为它是平台无关的,要保证传输到其他机器(具有不同指令集)的时候都能以同样的方式执行

在执行字节码文件的时候, JVM 才会按照具体情况选择是否要生成机器指令

既然是在执行的时候才会生成机器指令,如果这一步骤花费的时间过长,对于运行这个文件的用户而言就是不好的体验

追问

不是说java对于一些热代码会直接翻译成机器指令?那这些指令一般放哪

温馨提示:答案为网友推荐,仅供参考
相似回答