JIT编译器是做什么的?

JIT编译器是做什么的?

与非JIT编译器相比,JIT编译器具体做些什么?有人能给出一个简洁和容易理解的描述吗?



汪汪一只猫
浏览 1128回答 3
3回答

慕沐林林

JIT编译器运行后该程序已经启动并编译了代码(通常是字节码或某种VM指令)(或者就像它所称的那样,只是在时间上),变成了通常更快的形式,通常是主机CPU的本地指令集。JIT可以访问动态运行时信息,而标准编译器不能也可以进行更好的优化,比如经常使用的内联函数。这与编译全机器语言代码以前程序是第一次运行。换句话说,常规编译器在第一次运行程序之前将整个程序构建为EXE文件。对于较新的样式程序,程序集是用伪代码(p代码)生成的.只有在你在操作系统上执行程序之后(例如,双击它的图标),(Jit)编译器才会启动并生成机器代码(m代码),而基于Intel的处理器或任何东西都会理解这些代码。

翻翻过去那场雪

一开始,编译器负责将高级语言(定义为高于汇编程序的级别)转换为目标代码(机器指令),然后(由链接器)链接到可执行文件。在语言进化的某个阶段,编译器会将高级语言编译成伪代码,然后由解释器解释(由解释器)运行您的程序。这消除了目标代码和可执行文件,并允许这些语言可移植到多个操作系统和硬件平台。PASCAL(编译成P-Code)是最早的例子之一;Java和C#是最近的例子。最后,P-代码一词被字节码所取代,因为大多数伪操作都是字节长的。JIT编译器是运行时解释器的一个特性,它将不再每次调用方法时解释字节码,而是将字节码编译成正在运行的机器代码指令,然后调用这个对象代码。理想情况下,运行对象代码的效率将克服每次运行时重新编译程序的效率低下的问题。

德玛西亚99

JIT-在需要的时候(按需),单词本身就能及时地说出来。典型情景:源代码完全转换为机器代码。JIT方案:源代码将转换为汇编语言,如结构[用于C#的ExIL(中间语言),用于java的字节码]。只有当应用程序所需的所需代码仅转换为机器代码时,才会将中间代码转换为机器语言。JIT与非JIT比较:在JIT中,并不是所有的代码都被转换成机器代码-首先,所需代码的一部分将被转换为机器代码,然后如果调用的方法或功能不在机器中,那么它将被转换为机器代码.它减轻了CPU的负担。由于机器代码将在运行时生成.JIT编译器将生成为运行机器的CPU体系结构而优化的机器代码。JIT实例:在Java中,JIT在JVM(Java虚拟机)中在C#中,它是在CLR(公共语言运行时)中实现的。在Android中,它是在DVM(Dalvik VirtualMachine)或ART(Android运行时)中更新的版本。
打开App,查看更多内容
随时随地看视频慕课网APP