Java代码如何在虚拟机中运行?

编程知识 更新时间:2023-04-07 06:29:29

写在前面

本文隶属于专栏《100个问题搞定Java虚拟机》,该专栏为笔者原创,引用请注明来源,不足和错误之处请在评论区帮忙指出,谢谢!

本专栏目录结构和文献引用请见100个问题搞定Java虚拟机

解答

补充

Java 代码 -> Java 字节码

从虚拟机角度来看,执行 Java 代码需要将编译好的字节码文件加载到 Java 虚拟机中。

在运行过程中,每当调用进入一个 Java 方法,Java 虚拟机会在当前线程的 Java 方法栈中生成一个栈帧,用以存放局部变量以及字节码的操作数。

栈帧的大小是提前计算好的,JVM不要求栈帧在内存空间里连续分布。

当退出当前执行的方法时,不管是正常返回还是异常返回,JVM均会弹出当前线程的当前栈帧,并将之舍弃。

Java 字节码 -> 机器码

从硬件视角来看,Java 字节码无法直接执行,JVM需要将字节码翻译成机器码。

上述翻译过程有两种形式

  1. 解释执行,即逐条将字节码翻译成机器码并执行;

  2. 即时编译(Just-In-Time compilation,JIT),即将一个方法中包含的所有字节码编译成机器码后再执行。

前者的优势在于无需等待编译,而后者的优势在于实际运行速度更快。
HotSpot 默认采用混合模式,综合了解释执行和即时编译两者的优点。它会先解释执行字节码,而后将其中反复执行的热点代码,以方法为单位进行即时编译。

更多推荐

Java代码如何在虚拟机中运行?

本文发布于:2023-04-07 06:29:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/8fddf3b1024e92dcac3db6fa5591b2c7.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:机中   代码   如何在   Java

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!

  • 52529文章数
  • 14阅读数
  • 0评论数