b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

Java执行引擎(从字节码到机器码)

电脑杂谈  发布时间:2020-06-18 03:24:45  来源:网络整理

32位和64位的区别存字节_字节码和机器码的区别_字节转换ascii码

分配给由类加载器加载的JVM的运行时数据区域的字节码将由执行引擎执行. 执行引擎以指令为单位读取Java字节码. 它就像一个CPU,一个接一个地执行机器指令. 每个字节码指令由一个1字节的操作码和其他操作数组成. 执行引擎获取操作码,然后根据操作数执行任务,完成后继续执行下一个操作码.

但是,Java字节码是用人类可以理解的语言编写的,而不是可以由机器直接执行的语言. 因此,执行引擎必须将字节码转换为可以由JVM直接执行的语言. 字节码可以通过以下两种方式转换为适当的语言.

但是,用JIT编译器编译代码要比使用解释器一个接一个地解释执行所花的时间更多. 因此,如果代码仅执行一次,则最好解释执行情况,而不是先编译然后执行. 因此,具有内置JIT编译器的JVM将检查该方法的执行频率. 如果某个方法的执行频率超过某个值,则该方法将被编译为本地代码.

字节转换ascii码_32位和64位的区别存字节_字节码和机器码的区别

fg7

Java编译器和JIT编译器

JVM规范未定义执行引擎应如何执行. 因此,JVM的提供者通过使用不同的技术和不同类型的JIT编译器来提高执行引擎的效率.

32位和64位的区别存字节_字节码和机器码的区别_字节转换ascii码

大多数JIT编译器以以下方式执行:

JIT编译器

字节转换ascii码_字节码和机器码的区别_32位和64位的区别存字节

JIT编译器将字节码转换为中间层表达式(中间层表示形式)以进行优化,然后将该表示形式转换为本地代码.

Oracle Hotspot VM使用称为Hotspot编译器的JIT编译器. 之所以称为“热点”,是因为热点编译器会通过分析找到最需要编译的“热点”代码字节码和机器码的区别,然后将热点代码编译为本地代码. 如果不再频繁调用已编译为本地代码的字节码,换言之,此方法不再是热点,则Hotspot VM将从缓存中删除已编译的本地代码,并再次按照说明进行执行. 热点虚拟机分为服务器虚拟机和客户端虚拟机. 这两个VM使用不同的JIT编译器.

32位和64位的区别存字节_字节码和机器码的区别_字节转换ascii码

热点客户端VM和服务器VM.

客户端VM和服务器VM使用完全相同的运行时,但是如上图所示,它们使用不同的JIT编译器. Server VM使用了更高级的动态优化编译器,该编译器使用了更复杂,种类更多的性能优化技术.

IBM不仅在IBM JDK 6中引入了JIT编译器,而且还引入了AOT(提前)编译器. 它允许多个JVM通过共享缓存共享已编译的本机代码. 简而言之,其他JVM可以直接使用AOT编译器编译的代码. 另外,IBM JVM使用AOT编译器将代码编译器推进到JXE(Java EXecutable)文件格式中,以提供更快的执行方法.

大多数Java程序的性能是通过提高执行引擎的性能来实现的. 就像JIT编译器一样,引入了许多优化技术,因此可以始终提高JVM的性能. 原始JVM和最新JVM之间的最大区别是执行引擎.

将Hotspot编译器引入到1.3版的Oracle Hotspot VM中,并将JIT编译技术引入到Anroid 2.2版的Dalvik VM中.

介绍了字节码等中间语言,执行字节码的虚拟机以及通过JIT编译器提高JVM性能的技术,并广泛用于使用中间语言的编程语言中. 例如,Microsoft的.Net,CLR(公共语言运行时)也是VM字节码和机器码的区别,它执行称为CIL(公共中间语言)的字节代码. CLR提供AOT编译器和JIT编译器. 因此,在编译用C#或VB.NET编写的源代码之后,编译器将生成CIL,并使用JIT编译器在CLR上执行CIL. CLR和JVM类似,它还具有垃圾回收机制,并且也是基于堆栈的.


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/ruanjian/article-249269-1.html

    相关阅读
      发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

      热点图片
      拼命载入中...