标签: .net clr
CLRv4中的对象以这样的方式布局在内存中:
对象引用的实现方式对我来说很奇怪 - 引用实际上是一个指向包含指向表的指针的字段的指针。换句话说,它包含一个对象的移位地址(它不指向对象的开头,而是指向同步块之后)。资料来源:CLR Sync Block Address
为什么以这种方式实施?我相信它可能与性能有关 - 方法表可能比同步块更容易被访问,在这种情况下需要更少的操作。但是,如果是这种情况,则将同步块和指针重新排序到方法表更自然,因此后者位于对象的开头。这种布局的原因是什么?