这导致CLR 分配一个内部数据结构来管理对引用类型的访问

时间:2022-01-31 09:05:46

举例图中, 一个C#编写的测试措施,

输出两句话分袂 : Hello, GoodBye, 介绍其在windows上CLR的挪用过程。

这导致CLR 分配一个内部数据结构来管理对引用类型的访问

1.在执行Main要领之前, CLR会检测出Main的代码引用的所有类型。这导致CLR 分配一个内部数据布局来打点对引用类型的访谒。

Main要领次挪用WriteLine时, JIT函数会被挪用,JIT函数卖力将要领的IL代码编译本钱机CPU指令,

由于IL是即时编译的, 所以CLR这个组件称为JIT编译器

2. JIT函数被挪用时, 它知道要挪用的是哪个要领, 以及具体是什么类型界说了该要领。

然后, JIT会在界说该类型的措施集的元数据中查找被挪用要领的IL。

接着,JIT验证IL代码, 并且将IL代码编译本钱机CPU指令。本机CPU指令生存到动态分配的内存块中。

然后,JIT回到CLR为类型创建内部数据布局, 找到与被挪用要领对应的那笔记录,

改削最初对JIT的引用, 使其指向内存块的地点。

最后, JIT 函数跳转到内存块中的代码, 这些代码正式WriteLine要领, 代码执行完成返回时,

会回到Main中的代码, 像往常一样继续执行。

可执行EXE在windows挪用过程