加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

在RAM中加载C#类代码?

发布时间:2020-12-15 19:34:05 所属栏目:百科 来源:网络整理
导读:我想知道当你实例化类时,C#类的实际代码是否被加载到RAM中? 因此,例如,如果我有2个类CLASS A,CLASS B,其中A类有10000行代码,但只有1个字段,一个int. B类有10行代码,1个字段也有int.如果我实例化A类,由于其代码行,它将占用比B类更多的RAM? 一个补充问题,如
我想知道当你实例化类时,C#类的实际代码是否被加载到RAM中?

因此,例如,如果我有2个类CLASS A,CLASS B,其中A类有10000行代码,但只有1个字段,一个int. B类有10行代码,1个字段也有int.如果我实例化A类,由于其代码行,它将占用比B类更多的RAM?

一个补充问题,如果代码行与类一起加载到内存中,它们是否会为类的每个实例加载?或者只为所有实例一次?

提前致谢.

解决方法

在桌面框架中,我认为方法是逐个方法进行JIT的.我不知道在第一次加载类时,类的IL是否完全加载到RAM中,或者它们是否只是将内存映射到汇编文件.

无论哪种方式,您都可以获得所有实例的单个副本 – 至少对于非泛型类型.对于泛型类型(和方法),它稍微复杂一些 – 所有引用类型类型参数都有一个JIT表示,每个值类型类型参数都有一个JIT表示.所以List< string>和列表<流>共享本机代码,但List< int>和列表< Guid>别. (适用于具有多个泛型类型参数的类型的外推.)尽管对象没有自己的本机代码副本,但您仍然只能获得同一构造类型的所有实例的一个副本.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读