2

我知道引用类型对象由两部分组成:对对象的引用,它本质上是一个保存真实对象地址的指针,以及驻留在堆上的对象本身,它可能被 GC 移动。反过来,对象本身由两部分组成:实例数据部分(字段)和元数据部分。

我在网上阅读了很多关于引用类型的存储模型的页面,但没有一个给出关于元数据部分如何组织的具体描述。我只知道它在 32 位系统上占用了 8 个字节(可以通过 profiling 观察到),其中 4 个字节包含一个指向 vtable 的指针,但是额外的 4 个字节呢?GC标记?内置属性?有人详细了解吗?我知道它是特定于实现的,我只是很想知道它实际上是如何逐位组织的。例如,Boehm GC 只需要一点作为标记,为什么 CLR 需要 4 个字节?

--->8----

请参阅评论中 Damian 提供的链接!这就是我一直在寻找的答案。

4

0 回答 0