栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > NET面试题库

.NET类的初始化时内容空间是如何分配的?

.NET类的初始化时内容空间是如何分配的?

MyClass mc = new MyClass(),的空间分配策略如下:

 

1. 计算空间看是否会导致GC计算该类中定义的所有实例字段的size和两个附加对象(type handler(类对象的指针)和syncBlockIndex(指向一块用来管理对象同步的内存))的size并一直递归到object对象,得到其需要分配内存大小,看剩余内存是否够分配此对象,不够会导致垃圾回收。

 

2. 首先构造MyClasstype对象,type对象包括静态字段和方法表,将其分配在托管堆的loader堆上,注意此对象将不会被GC自动回收,其生命周期是从创建到AppDomain卸载。

 

3. 构造MyClass的实例字段,构造附加type handler并指向type对象,构造SyncBlockIndex并指向同步内存。

 

4. 调用MyClass构造函数,此时会引起其父类初始化,父类初始化循环上述过程,直至object对象完成创建,再返回执行子类构造函数直至MyClass,创建MyClass完成后,返回其内存地址,赋值给MyClass的this,并将其引用传给栈上声明的myClass。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/266121.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号