微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

java – 什么是字节码,JVM如何处理它们

@H_502_0@
我听到很多次 Java实现JIT(即时)编译及其在平台上可移植的字节码被JVM“解释”.但是,我不知道字节码是什么,JVM在Java语言架构中是什么意思?我想更多地了解他们.

解决方法

JVM(Java虚拟机)具有与真实机器一样的指令集.该指令集的名称是Java字节码.它在 Java Virtual Machine Specification中描述.其他语言在执行之前被翻译成一个字节码,例如ruby和python. Java的字节码处于相当低的水平,而python的级别更高.

解释和JIT编译是执行字节码的两种不同策略.解释过程会一次一个地对每个指令中编码的虚拟机状态进行更改. JIT编译将字节码转换为执行等效操作的主机平台的本机指令.

解释通常很快启动但在执行时缓慢,而JIT有更多的启动开销,但运行速度更快.现代JVM使用解释和JIT技术的组合来获得两者的好处.字节码首先被解释,而JIT在后台翻译它. JIT编译完成后,JVM切换到使用该代码而不是解释器.有时JIT编译可以产生比C和C使用的提前编译更好的结果,因为它更具动态性. JVM可以跟踪代码调用的频率以及通过代码的典型路径,并在程序运行时使用此信息生成更有效的代码. JVM可以切换到这个新代码,就像最初从解释器切换到JIT代码一样.

就像有其他语言编译为本地代码,如C,C,Fortran;有其他语言的编译器输出JVM字节码.一个例子是Scala语言.我相信groovy和jruby也可以转换成java字节码.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐