个性化阅读
专注于IT技术分析

.NET中什么是即时(JIT)编译器

即时编译器(JIT)是通用语言运行时(CLR)in。净负责管理执行。净程序, 无论任何。净编程语言。特定于语言的编译器将源代码转换为中间语言。然后, 该中间语言由即时(JIT)编译器转换为机器代码。该机器代码特定于运行JIT编译器的计算机环境。

JIT编译器的工作:需要JIT编译器来加快代码执行速度并提供对多个平台的支持。其工作方式如下:

.NET中什么是即时(JIT)编译器1

JIT编译器将Microsoft中间语言(MSIL)或通用中间语言(CIL)转换为机器代码。这是在执行MSIL或CIL之前完成的。 MSIL在需求的基础上转换为机器代码, 即JIT编译器根据需要而不是整个MSIL或CIL进行编译。存储已编译的MSIL或CIL, 以便在需要时可用于后续调用。

即时编译器的类型:有3JIT编译器的类型如下:

JIT之前的编译器:

使用Pre-JIT编译器可以在单个编译周期中将所有源代码同时编译为机器代码。此编译过程在应用程序部署时执行。而且此编译器始终在Ngen.exe(本机图像生成器)

.NET中什么是即时(JIT)编译器2

普通的JIT编译器:

在正常JIT编译器首次调用运行时所需的源代码方法时, 会将它们编译为机器代码。之后, 它们将存储在缓存中, 并在再次调用时使用。

.NET中什么是即时(JIT)编译器3

Econo JIT编译器:

Econo JIT编译器将运行时所需的源代码方法编译为机器代码。在不再需要这些方法之后, 将其删除。

.NET中什么是即时(JIT)编译器4

JIT编译器的优点:

  • JIT编译器需要较少的内存使用量, 因为JIT编译器仅将运行时所需的方法编译为机器代码。
  • 通过使用JIT编译器可以减少页面错误, 因为在一起所需的方法很可能在同一内存页面中。
  • JIT编译器可以在代码运行时执行基于统计分析的代码优化。

JIT编译器的缺点:

  • 在最初执行应用程序时, JIT编译器需要更多的启动时间。
  • JIT编译器大量使用高速缓存存储器来存储运行时所需的源代码方法。

注意:JIT编译器的许多缺点可以使用Ahead-of-time(AOT)编译来解决。这涉及将MSIL编译为机器代码, 因此不需要运行时编译, 并且可以本地执行机器代码文件。


赞(0)
未经允许不得转载:srcmini » .NET中什么是即时(JIT)编译器

评论 抢沙发

评论前必须登录!