admin管理员组文章数量:1794759
Java代码如何在虚拟机中运行?
写在前面
本文隶属于专栏《100个问题搞定Java虚拟机》,该专栏为笔者原创,引用请注明来源,不足和错误之处请在评论区帮忙指出,谢谢!
本专栏目录结构和文献引用请见100个问题搞定Java虚拟机
解答 补充 Java 代码 -> Java 字节码从虚拟机角度来看,执行 Java 代码需要将编译好的字节码文件加载到 Java 虚拟机中。
在运行过程中,每当调用进入一个 Java 方法,Java 虚拟机会在当前线程的 Java 方法栈中生成一个栈帧,用以存放局部变量以及字节码的操作数。
栈帧的大小是提前计算好的,JVM不要求栈帧在内存空间里连续分布。
当退出当前执行的方法时,不管是正常返回还是异常返回,JVM均会弹出当前线程的当前栈帧,并将之舍弃。
Java 字节码 -> 机器码从硬件视角来看,Java 字节码无法直接执行,JVM需要将字节码翻译成机器码。
上述翻译过程有两种形式解释执行,即逐条将字节码翻译成机器码并执行;
即时编译(Just-In-Time compilation,JIT),即将一个方法中包含的所有字节码编译成机器码后再执行。
前者的优势在于无需等待编译,而后者的优势在于实际运行速度更快。 HotSpot 默认采用混合模式,综合了解释执行和即时编译两者的优点。它会先解释执行字节码,而后将其中反复执行的热点代码,以方法为单位进行即时编译。
版权声明:本文标题:Java代码如何在虚拟机中运行? 内容由林淑君副主任自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.xiehuijuan.com/baike/1686842826a109214.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论