如果有几个类艺术家的实例;当它们存储在堆中时,.Net如何将这些内存块标记为Artist的类型?
谢谢!
解决方法voID M(){ Artist a = new Artist();}
调用该方法时,会扩展一个新的堆栈帧,CLR在执行该方法的第一个语句之前会有一些准备代码,就像一个现象.在此期间,CLR加载方法中使用的所有类型.在此示例中,Artist的类型将加载到堆.但是类型也可能已经存在,因为在调用M()之前使用了类型.然后我们来到第一个表达式,一个新的语句,它调用类的构造函数.如果你看一下它生成的CIL,你会看到像newobj blabla这样的东西.这里堆上的内存块被分配用于存储实例.块的大小取决于类的详细信息,因为块需要保存实例的所有数据.通常该块由以下组成:
Type pointer + Sync root + Instance data
类型指针指向堆上的类型(在前言中加载).同步根是锁定和同步的记录.实例数据存储成员的实例数据.
总结以上是内存溢出为你收集整理的c# – 参考值的’Type’存储在内存中?全部内容,希望文章能够帮你解决c# – 参考值的’Type’存储在内存中?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)