与非JIT编译器相比,JIT编译器具体做什么?有人能给出简洁易懂的描述吗?


当前回答

JIT代表Just-in-Time,这意味着代码在需要时才编译,而不是在运行时之前。

这是有益的,因为编译器可以生成针对特定机器优化的代码。静态编译器,就像普通的C编译器一样,将所有代码编译为开发人员机器上的可执行代码。因此,编译器将基于一些假设执行优化。它可以编译得更慢,做更多的优化,因为它不会降低用户执行程序的速度。

其他回答

JIT指的是一些JVM实现中的执行引擎,它更快,但需要更多内存,是一种即时编译器。在此方案中,方法的字节码在第一次调用方法时被编译为本机机器码。然后缓存该方法的本机机器码,以便下次调用相同的方法时可以重用它。

JIT代表Just-in-Time,这意味着代码在需要时才编译,而不是在运行时之前。

这是有益的,因为编译器可以生成针对特定机器优化的代码。静态编译器,就像普通的C编译器一样,将所有代码编译为开发人员机器上的可执行代码。因此,编译器将基于一些假设执行优化。它可以编译得更慢,做更多的优化,因为它不会降低用户执行程序的速度。

Just In Time编译器也称为JIT编译器 Java的性能改进。默认启用。它是 编译在执行时完成。 Java通过将JIT编译器包含在 JVM。

jit——来得正是时候 这个词本身就表示需要的时候(按需)

典型场景:

源代码完全转换为机器代码

JIT的场景:

源代码将转换为汇编语言,如结构[为ex IL(中间语言)为c#,字节码为java]。

中间代码仅在应用程序需要时才转换为机器语言,所需代码仅转换为机器代码。

JIT与非JIT的比较:

在JIT中,并不是所有的代码都先转换成机器码 所有必要的代码都将被转换成机器代码 如果调用的方法或功能不在机器中,那么 将被转换成机器代码…减少CPU的负担。 因为机器代码将在运行时....上生成JIT 编译器将生成优化运行的机器代码 机器的CPU架构。

JIT的例子:

在Java中,JIT是在JVM (Java虚拟机)中 在c#中,它是在CLR(公共语言运行库)中 在Android中,它是在DVM (Dalvik Virtual Machine)中,或者在更新的版本中是ART (Android RunTime)。

代码被编译成某种IL(中间语言)。当你运行你的程序时,计算机不理解这段代码。它只理解本机代码。因此JIT编译器会动态地将IL编译为本地代码。它在方法级别上执行此操作。