繁体   English   中英

热点JVM是将代码编译为机器代码还是直接运行它

[英]Does the Hotspot JVM Compile the code to machine code or simply runs it

为了简化问题,让我们假设在我们的JRE中,我们有一个不使用JIT的Hotspot JVM实现。 意味着我们不会预编译机器代码。

我试图理解,JVM遇到字节代码时,解释器是否使用Hotspot编译器将代码编译为机器代码,然后JVM才能运行代码? 还是由于JVM具有与每个字节代码命令相对应的某种本机方法,解释器是否仅运行代码?

意味着我们不会预编译机器代码。

您上面的句子表明您对JIT编译器是误解。 它不会提前编译代码,而是及时编译,因此得名。

这使其余问题更难以理解,因为“ HotSpot编译器”是JIT编译器。

但是,为您总结一下:在正常情况下,HotSpot首先解释字节码,然后JIT编译那些运行时分析数据表明它们是“热点”的片段,这些片段经常被执行(默认阈值为10,000通过一段代码)。

如果禁用JIT编译,则HotSpot实际上只会解释所有Java字节码。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM