gpt4 book ai didi

java - Hotspot JVM 是将代码编译为机器代码还是简单地运行它

转载 作者:行者123 更新时间:2023-12-01 22:32:40 25 4
gpt4 key购买 nike

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

我想理解,JVM在遇到字节码时,解释器是否使用Hotspot编译器将代码编译为机器码,然后JVM才能运行代码?或者解释器只是运行代码,因为 JVM 有某种与每个字节码命令相对应的 native 方法?

最佳答案

Meaning we won't have machine code precompiled.

你上面这句话表明你对JIT编译器是什么有误解。它不会提前编译代码,而是及时编译,因此得名。

这使得你的问题的其余部分更难理解,因为“HotSpot 编译器”是 JIT 编译器。

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

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

关于java - Hotspot JVM 是将代码编译为机器代码还是简单地运行它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27379447/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com