MSIL权威指南阅读 - CLR基础

CLR运行库。

CLR是供.NET应用程序使用的运行时环境。在.NET应用程序和底层操作系统之间提供操作层。

CLR指定规则保证.NET应用程序的互操作性,别成为公共语言规范CLS,CLI.

CLS(Common Language Specification) 限制了命名约定、数据类型、函数类型以及某些其他元素,为不同语言提供了公共标准。知识确保互操作性,并非强制条件。

CLR环境下,.NET应用程序的抽象中间包括两个主要组件:元数据和托管代码。

元数据:是应用程序的所有结构项(类、类的成员和特性、全局项等)

托管代码:表示了应用程序的方法(函数)的功能,他们以微软中间语言(MSIL)或公共中间语言CLI的抽象二进制形式进行编码。

IL代码由CLR"托管"。CLR脱光包括三个主要活动:类型控制、结构化异常处理和垃圾收集。

类型控制涉及在执行期间项类型的验证和转换。

托管异常处理在功能上与非托管结构化遗产给处理类似,但它是由CLR执行的而不是由系统执行的。

垃圾收集涉及对不在使用的对象进行自动表示和释放。

CLR处理元数据和IL代码主要子系统是加载程序(loader)和JIT(just-in-time,即时)编译器。

加载程序读取元数据,并在内存中创建类及其成员的内部表示和布局。它是按需执行这项任务,也就是说一个类只有在被引用的时候才会被加载和布局。没有引用的类就不会被加载。在加载类的时候,加载程序会对相关元数据进行一系列的一致性检查。

JIT编译器根据加载程序的行为结果,将使用IL编码的方法编译为底层平台的本地代码,因为CLR不是解释器,所以它不执行任何IL代码,而IL代码在内存中被编译为本地代码,并且这些本地代码会被执行,JIT编译器也是按需进行处理的,这意味着方法只有在被调用的时候才会被编译,已编译的方法会在内存中缓存。然而,如果内存有限,那些方法不在使用时就会被销毁,如果方法在销毁后被再次调用那么该方法被重新编译。

创建和执行托管.NET应用程序的顺序。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值