你了解JVM如何执行字节码文件的吗?

Posted 老齐课堂

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了你了解JVM如何执行字节码文件的吗?相关的知识,希望对你有一定的参考价值。

     在市场上主流的JVM(HotSpot)中提供了两种字节码的执行方式,一种为直接解释执行,一种为JIT编译执行。如图-1所示:

图-1

     在图-1中的热点代码,一般泛指执行频度比较高的代码块或方法。这样的代码可以在执行时通过编译执行器,先将字节码解释为二进制机器码进行缓存,然后执行时从缓存中进行反复获取执行即可,这也就是所谓的即时编译(Just-In-Time compilation,JIT)。通过这种方式以提高代码的执行效率。

      为什么JVM中解释执行与编译执行并存呢(混合模式)?

      解释器与编译器两者各有优势,当程序需要迅速启动和执行的时候,解释器可以首先发挥作用,省去编译的时间,立即执行。在程序运行后,随着时间的推移,即时编译(JIT)逐渐发挥作用,它可以对反复执行的热点代码以方法为单位进行即时编译,可以获取更高的执行效率。但是如果JIT对每条字节码都进行编译,缓存(缓存的指令是有限的),会增加开销。所以当程序运行环境中内存资源限制较大(如部分嵌入式系统中),可以使用解释器执行节约内存,反之可以使用编译执行来提升效率。


以上是关于你了解JVM如何执行字节码文件的吗?的主要内容,如果未能解决你的问题,请参考以下文章

JVM字节码执行模型及字节码指令集面试+工作

JVM技术专题 字节码指令集调用执行流程分析「语法分析篇」

JVM原理探索字节码指令集调用执行流程分析(语法分析篇)

JVM总括三-字节码字节码指令JIT编译执行

JVM进阶之路十二:字节码指令

一夜搞懂 | JVM 字节码执行引擎