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应用程序的顺序。

MSIL权威指南阅读 - CLR基础相关推荐

  1. MyCat权威指南阅读笔记(基础篇)

    1.1何为数据切分? 简单来说,就是指通过某种特定的条件,将我们存放在同一个数据库中的数据分散存放到多个数据库(主 机)上面,以达到分散单台设备负载的效果. 数据的切分(Sharding)根据其切分规 ...

  2. IDA Pro 权威指南阅读摘要1

    IDA Pro 权威指南阅读摘要1 文件加载 使用File->Open命令打开一个新文件时,会看到加载对话框. Binary File (二进制文件)是加载类型列表的最后一个选项,它是IDA加载 ...

  3. Postfix权威指南-阅读笔记-架设和维护邮箱服务器

    PostFix权威指南 目录 文章目录 适用人群 前言 1. 简介 Internet E-mail传递流程 2.基础概念 在线说明书 模拟SMTP对话 常见响应状态码 4.基本的配置与管理 默认安装目 ...

  4. NET探秘:MSIL权威指南 简单示例

    CLR基础 CLR是供.NET应用程序使用的运行时环境,它在.NET应用程序和底层操作系统之间提供了一个操作层. CLS公共语言规范,限制了命名约定.数据类型.函数类型以及某些其他元素,为不同的语言提 ...

  5. HTTP权威指南阅读笔记五:Web服务器

    Web服务器会做些什么: 1.建产连接:接受一个客户端连接,或者如果不希望与这个客户端建立连接,就将其关闭. 1)处理新连接 2)客户端主机名识别 3)通过ident确定客户端用户 ident在组织内 ...

  6. Hadoop权威指南阅读笔记

    2019独角兽企业重金招聘Python工程师标准>>> 1.MR和关系型数据 MR和传统的关系型数据库处理的数据是不同,传统关系型数据库处理的是较结构化数据,对于半结构化和非机构话数 ...

  7. HTTP权威指南阅读笔记一:HTTP概述

    HTTP协议版本: 1.HTTP/0.9:HTTP的1991原型版本称为HTTP/0.9.这个协议有很多严重的缺陷,只应该用与与老客户端的交互.HTTP/0.9只支持GET方法,不支持多媒体内容的MI ...

  8. JS权威指南阅读笔记

    2019独角兽企业重金招聘Python工程师标准>>> 词法结构 unicode以\u为前缀,其后跟随4个十六进制数 标识符必须以字母.下划线或$开始,后续字符可以是字母.数字.下划 ...

  9. 《Cortex-CM3权威指南》——Cortex-CM3基础

    一.寄存器组 一).通用寄存器 1.Cortex-CM3拥有通用寄存器以及一些特殊功能寄存器.R0-R12是最通用目的的,但是绝大多数16位指令只能使用R0-R7,而Thumb-2则可以访问所有通用寄 ...

最新文章

  1. interp3函数-----三维数据插值
  2. 打印show attend and tell的编码器网络结构
  3. Android开发之最简单的布局点击Tab和Fragment切换源码(特别适合初学者)
  4. [Java基础]方法引用
  5. maven(3)maven3.3.9使用入门
  6. mac svn 设置代理
  7. 国资委发文!10本书讲透数字化时代新机遇
  8. c++ 14新的语法特性之返回类型推导
  9. 通过系统表获取SQL,Access,Oracle数据库的元数据信息
  10. Visual Studio 与 Eclipse,谁是最强 IDE?
  11. Little endian和Big endian的区别
  12. Jedis 常用API使用
  13. linux下tab作用的描述?
  14. could not connect to smtp host java_服务器发送邮件出现Could not connect to SMTP host错误 解决办法...
  15. dh算法c语言,openssl开源程序dh算法解析之dh_key.c
  16. node 简繁体转换_简体繁体转换
  17. 多线程+反爬:爬取阿里巴巴国际站物流表现数据到mysql
  18. linux下操作3G模块
  19. 查看360极速浏览器已保存的星号密码明文
  20. 干货丨1.3万字简述,PRD到底怎么写

热门文章

  1. Linux系统用户命令详解
  2. 纯正英语 值得背诵(296句)
  3. 微信分享链接出现config:invalid signature错误的解决方法
  4. Mikrotik配置bonding
  5. elk安装教程2017
  6. PyTorch中文教程 | (16) DCGAN
  7. Adobe Photoshop 键盘快捷键 备忘清单
  8. .NetCore框架Surging系列(二)HTTP
  9. 西门子S7-200 SMART如何实现远程监控并通过手机自动报警
  10. NYOJ 952 最大四边形 (n个点求组成四边形的最大面积)