什么是堆中的类型对象

Tar*_*rik 5 .net heap clr

我知道当在Heap中创建对象时,它们还有两个以上的字段:

  1. 同步块索引
  2. 键入对象指针

所以我想知道何时在堆内存中创建Type Object以及它拥有什么样的数据?它只代表Type的元数据?

我无法找到很多细节.

Dan*_*gby 7

Type对象还包含支持该类型上任何静态字段的字节以及一个方法表,该类型中定义的每个方法有一个条目.

如果方法至少执行一次,方法表中的每个条目都指向JIT编译的本机代码.

类型对象是在第一次实例化类型时创建的,或者是第一次引用静态类型成员时创建的.

我强烈建议购买杰弗里里希特的书,副本CLR通过C#如果你想获得的CLR做什么一个非常深刻的理解.第4章中标题为"运行时的内容如何相关"的部分详细介绍了堆上的.NET类型分配过程.

MSDN杂志2005年5月版有题为"的文章JIT和运行:钻进入.NET框架内部机制来见CLR如何创建运行时对象 "有一些好的信息为好,特别是对部分类型基本原理方法表.

  • 我直接从我提到的部分中提取答案.:d (2认同)