我遇到了一些有关JVM/JIT Activity 的引用,其中似乎在编译字节码和解释字节码之间有区别。特定注释声明的字节码将在前10000次运行时进行解释,然后进行编译。

“编译”和“解释”字节码之间有什么区别?

最佳答案

解释字节码基本上是逐行读取字节码,不进行任何优化或任何操作,然后对其进行解析并实时执行。由于多种原因,这种方法效率低下,其中包括Java字节码设计得不能快速解释的问题。

编译方法时,JIT会加载整个方法并生成直接在CPU上运行的 native 代码,而不是逐行读取和解释字节码。编译该方法一次之后,每次调用该方法时都会直接使用生成的 native 代码。这在天文速度上更快,但是在编译该方法时会产生一些开销。除其他外,JVM仅负责编译经常调用的方法,以最大程度地减少开销,同时最大化被频繁调用的“紧密内循环”代码的性能。

关于java - 解释字节码与编译字节码?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10263782/

10-11 22:28