首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >C#中存储的方法表在哪里?

C#中存储的方法表在哪里?
EN

Stack Overflow用户
提问于 2022-08-17 03:33:16
回答 1查看 76关注 0票数 0

我正在研究.NET体系结构,但我不知道方法表存储在哪里。.NET程序集包含报表、类型元数据和CIL代码。方法表在类型元数据中吗?还是在堆里?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-08-17 04:18:59

这是来自20+年前的记忆。我一次就知道这件事的大部分。

当加载程序第一次决定需要一个类型时,它会将适当的程序集/模块加载到(本机)内存中的内存映射文件中。

然后,它通过清单和其他元数据读取类型元数据。此时,它构建方法表(和其他类型特定的goop)。它在某个地方的本地内存段中。

最初,方法表包含每个方法的存根。当调用存根时,将使JIT编译器将IL (驻留在程序集的内存映射文件中)编译为本机代码(驻留在本机内存段中)。这些方法按照调用的方式逐个编译JIT。

在这个过程中的某个地方,如果类型有一个静态构造函数,它就会被调用(规范说,在任何引用该类型的代码运行之前就会发生这种情况--我相信确切的时间已经改变了一次)。

我想指出的是,“哪里”并不重要,重要的是它的行为。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73382588

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档