CLR(公用语言运行时)和Java虚拟机一样也是一个运行时环境,它负责资源管理(内存分配和垃圾收集),并保证应用和底层操作系统之间必要的分离。.NET提供了一个运行时环境,叫做公用语言运行时(Commen Language Runtime,是一种多语言执行环境,支持众多的数据类型和语言特性。他管理着代码的执行,并使开发过程变得更加简单。这是一种可操控的执行环境,其功能通过编译器与其他工具共同展现。

依靠一种以运行时为目标的编译器开发的代码叫做可操控代码managed code。与之相对的是unmanaged code。

元数据metadata:为了使运行时环境可以向可操控代码提供服务,语言编译器需要产生一种元数据,它将提供在使用语言中的类型、成员、引用的信息。运行时环境使用元数据定位并载入类,在内存中展开对象实例,解决方法调用,产生本地代码,强制执行安全性,并建立运行时环境的边界。

可操控执行的含义:对象在执行的过程中完全被运行时环境所控制。运行时环境提供以下服务:自动内存管理、调试支持、增强的安全性及与非可操控性代码的互操作性。条件:1、选择以运行时为目标的语言编译器,如VB、C#;2、在组件的输出类型中使用CLR要求的语言特性。

为了提高平台的可靠性,以及为了达到面向事务的电子商务应用所要求的稳定性级别,CLR还要负责其他一些任务,比如监视程序的运行。按照.NET的 说法,在CLR监视之下运行的程序属于“受管理的”(managed)代码,而不在CLR之下、直接在裸机上运行的应用或者组件属于“非受管理的” (unmanaged)的代码。 
CLR将监视形形色色的常见编程错误,许多年来这些错误一直是软件故障的主要根源,其中包括:访问数组元素越界,访问未分配的内存空间,由于数据体积过大而导致的内存溢出,等等。 
然 而,这种对受管理代码的运行监视是有代价的。虽然当前还不可能精确地得到监视程序运行所需要的开销,但从当前Beta测试版的性能表现来看,正如 Microsoft所承认的那样,我们可以预料由它导致的性能降低程度至少达到10%。当然,如果监视程序运行能够将稳定性和可用性提高到一个新的档次, 我们可以怀疑10%的性能降低是否还可以称为一件坏事……

以上转自:

http://www.kmcenter.org/blog/user1/191/archives/2004/386.html

http://i-t.org.cn/html/biancheng/200703/2011.html

最新文章

  1. Idea中包内中的置文件如何发布到编译后的目录中去
  2. 学习Coding-iOS开源项目日志(四)
  3. android edittext 去边框 去下划线
  4. RBL开发笔记一
  5. zoj3888 找第二大
  6. codeforces 485B Valuable Resources 解题报告
  7. [HDOJ5791]Two(DP)
  8. 字符集与字符编码 (charset & encoding)
  9. html利用锚点实现定位代码实例
  10. java基础知识回顾之---java StringBuffer,Stringbuilder与String的区别
  11. arcgis数据文件使用
  12. Python 正则表达式应用【转载】
  13. Instruments使用实战
  14. 解密Lazy<T>
  15. 原生封装ajax
  16. 高阶函数,柯里化,sort排序
  17. ThinkPHP的Rbac权限控制
  18. Core Animation 文档翻译 (第四篇)
  19. Rancher2.1安装部署
  20. python 12 模块与包

热门文章

  1. win7,Ubuntu 12.04 双系统修改启动项顺序三方法
  2. ROI POOLING 介绍
  3. windows10下基于vs2015的 caffe安装教程及python接口实现
  4. 应用jfinal时要注意区分Db.query和Db.find
  5. javascript精雕细琢(三):作用域与作用域链
  6. 蓝桥杯 地宫寻宝 DFS 动态规划
  7. django project 的快速构建
  8. 【转载】wondows下wget的使用
  9. Java 多线程实现
  10. angularJS 事件广播与接收