首页 > 解决方案 > 为什么 CLR 为每个方法分配一个包含一个条目的内部结构

问题描述

我正在通过 C# 阅读 CLR 这本书,下面是第一次调用方法时发生的情况的描述: 在此处输入图像描述

就在 Main 方法执行之前,CLR 检测到 Main 代码引用的所有类型。这会导致 CLR 分配一个内部数据结构,用于管理对引用类型的访问。在图 1-4 中,Main 方法引用单个类型 Console,导致 CLR 分配单个内部结构。此内部数据结构包含由 Console 类型定义的每个方法的条目。每个条目都包含可以找到方法实现的地址。初始化此结构时,CLR 将每个条目设置为包含在 CLR 本身内部的未记录的内部函数。我将此函数称为 JITCompiler。

我不明白为什么 CLR 为每个方法分配一个包含一个条目的内部结构,一个类型有 100 个方法而我只使用一种方法,然后 CLR 将为 100 个方法分配包含 100 个条目的结构,不是效率很低吗?

标签: c#clr

解决方案


推荐阅读