第一次执行方法

1、  CLR检测方法中的引用类型,并生成一个内部数据结构,用于管理对引用类型的访问。在这个内部数据结构中,引用类型的每一个方法实现都有一条对应的记录,每条记录容纳了一个地址。对这个结构进行初始化的时候,CLR将每条记录都设置成CLR内部包含的一个未文档化的函数。这个函数被称为:JITCompiler。被调用的JITCompiler函数负责将一个方法的IL代码编译成本地的CPU指令。

2、  JITCompiler函数被调用时,它知道要调用那个方法,以及具体是什么类型定义了该方法。然后,JITCompiler会再定义程序集的元数据中搜索被调用方法的ILJITCompiler验证IL代码,并将IL代码编译成本地CPU指令。本地CPU指令保存在一个动态分配的内存块中。然后JITCompiler回到CLR为类型创建的内部数据结构,找到与被调用的方法对应的那一条记录,然后将最初调用它的那个引用替换成内存块的地址。最后JITCompiler函数会跳到内存块中的代码,也就是被调用函数的具体实现。代码返回后继续执行原来的函数。

3、  当第二次调用此方法时会直接执行内存块中的代码,完全跳过JITCompiler函数。

posted @   KiddLee  Views(676)  Comments(3Edit  收藏  举报
编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示