通用语言运行时
来源:互联网 发布:逆火软件 编辑:程序博客网 时间:2024/05/01 19:34
1.通用语言运行时
1.1概述:.net框架中的任何东西都依赖CLR;建立与CLR之上的软件,称为托管代码。
1.2 CTS(通用类型系统):定义了核心语义没有定义语法,定义了值类型和引用类型
1.2.1值类型:都继承自ValueType;Byte、Char、int16、int32、int64、Uint16、Uint32、Uint64、Single、Double
1.2.2引用类型:
类型成员:方法(Methods)、字段(Fields)、事件(Events)、属性(Properties)
引用类型:Class,InterFace,Array,Delegate
1.2.3 两者区别:前者的实例被分配于堆栈,后者则只不过是一个位于堆栈的引用,指向一个被分配于堆的实值。
1.3 CLS(通用语言规范):定义了一个庞大的CTS子集,任何语言如果想和其他的CLS语言互通,都必须遵从它。
1.4编译托管代码
1.4.1MSIL(微软中间语言):定义了一套虚拟指令集,是CLR的汇编语言。含有操作堆栈的MSIL指令。
1.4.2Metadata(元数据):描述这些类及定义于此文件中
1.5 程序集
1.5.1定义:程序集是一个逻辑上的构建,并不存在什么单一文件将所有必要的文件包裹成一个程序集.
1.5.2 特点:一个程序集可以由单一文件或一组文件构成.对于一个”单文件程序集”,清单存储于文件自身.对于一个”多文件程序集”,清单存储在程序集的头文件中.
1.5.3 分类:静态程序集—由VS程序生成,其内容被存储于磁盘上(一般CS程序).
动态程序集—直接在内存中生成,而后立即运行(asp.net所创建的).
1.6 运行托管代码
1.6.1 装载:CLR确定程序版本,CLR在GAC中查找,CLR检查应用程序配置文件内的codebase元素.
1.6.2 编译MSIL:CLR在装载完后,然后在每个方法第一次被调用时编译它,称为即时编译(JIT)
注:被JIT编译后的本地代码并未被保存于磁盘上,而是每次装载程序时都执行JIT
1.6.3 创建本地映像:用工具Ngen.exe生成制定程序集和制定处理器的MSIL代码到本地.
1.7 垃圾回收
1.7.1 启动:当CLR注意到堆被占满,便自动运行垃圾回收
1.7.2 原理:它扫描堆,寻找任何种类的垃圾(在堆上,没有被任何堆栈上的对象引用),搞清楚堆内那一部分是垃圾,它重新排列堆内容,更加紧密地排列那些还被使用的值.
1.7.3 策略:随着时间推移,具有较长寿面的对象,会被搬移到HEAP(堆)尾部.在真实的软件里头,新生成的对象,也是最容易称为垃圾的对象.故搜新垃圾时先搜索最新分配的对象所在的地点.如果释放不够,则会搜索前一代对象,仍释放不够,则搜索全部对象.
1.7.4 终结器(Finalizers):开发人员可以重写对象的终结器,在一个拥有终结器的对象被释放前,这个特殊的方法将被记录在终结列表.最终这个列表中的所有终结器都会被调用.
1.8应用程序域
1.8.1运行期宿主:它装载并初始化CLR,然后通常把控制权转给托管代码.
- 通用语言运行时
- 如何加载通用语言运行时?
- 承载(Host)通用语言运行时
- (读书笔记).NET大局观—通用语言运行时
- (四)类型与通用语言运行时
- 编写执行你的第一个Yukon CLR(通用语言运行时)存储过程
- 第二部分 类型与通用语言运行时----------------读《Microsoft.NET框架程序设计》
- 第二部分 类型与通用语言运行时----读《Microsoft.NET框架程序设计》
- 第二部分 类型与通用语言运行时2-----《Microsoft.NET框架程序设计》
- 编写执行你的第一个YukonCLR(通用语言运行时)存储过程
- CLR(common language runtime)通用语言运行平台
- vc++ 调用(.Net)通用语言运行库
- API23运行时获取权限通用代码
- 公共语言运行时
- CUDA学习之五(通用运行时组件)
- 语言独立性:公共语言运行时
- 公共语言运行时(CLR)
- 程序运行时切换语言
- BeanUtils.copyProperties与PropertyUtils.copyProperties用法及区别
- MAXIMO是什么
- IA-32体系结构CPU保护模式常见误区
- linux静态链接库与动态链接库的区别及动态库的创建(转)
- 我开通博客啦
- 通用语言运行时
- 五大常用算法 ----DP
- jQuery对select操作
- FAST的应用价值
- C# 导出Excel格式设置
- 文字滚动的几种效果及实现方法
- 五大常用算法 ----回溯算法
- C# ArcGlobe常用代码
- Symbian OS 活动对象正解