加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

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

发布时间:2020-12-14 16:27:15 所属栏目:Java 来源:网络整理
导读:我听到很多次 Java实现JIT(即时)编译及其在平台上可移植的字节码被JVM“解释”.但是,我不知道字节码是什么,JVM在Java语言架构中是什么意思?我想更多地了解他们. 解决方法 JVM(Java虚拟机)具有与真实机器一样的指令集.该指令集的名称是Java字节码.它在 Java
我听到很多次 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字节码.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读