C#中Method Table的存储位置:属于Type metadata还是堆?
.NET Method Table 存储位置解析
- 首先明确:Type metadata(类型元数据)里并不存储Method Table。Type metadata是编译时就嵌入到Assembly里的静态信息,包含类型的方法签名、名称、参数定义、继承关系等描述性内容,加载到内存后处于只读的非堆内存区域,属于静态数据范畴。
- Method Table是CLR在运行时生成的结构,存储在托管堆中。当CLR第一次加载某个类型时,会根据Type metadata里的静态描述信息,动态生成对应的Method Table。它包含了该类型的方法实际执行指针、接口实现信息、静态字段存储位置、类型对象指针等运行时必需的核心数据,是类型在CLR运行时的核心标识。
- 额外补充:每个被CLR加载的类型都对应唯一的Method Table,实例对象的对象头中会包含指向该类型Method Table的指针,CLR正是通过这个指针实现多态调用、类型检查、字段访问等关键功能。
内容的提问来源于stack exchange,提问作者YKik
相关产品推荐
相关产品推荐

