首页 理论教育 C#面向对象程序设计:通用语言运行时

C#面向对象程序设计:通用语言运行时

时间:2023-11-20 理论教育 版权反馈
【摘要】:.NET Framework框架的基础是通用语言运行时。这些都是CLR的核心服务,为代码执行提供了一个高效的托管环境,为开发人员的提高程序开发效率和应用程序的可靠运行提供保障。将IL和元数据打包,加入PE和CLR文件头使之成为托管模块,将各个模块打包为程序集。.NET里面的通用语言运行时是编译执行,它和Java的虚拟机JVM的解释执行不同,CLR是在应用程序首次被调用时,全部一次性编译成机器码后再执行。

C#面向对象程序设计:通用语言运行时

.NET Framework框架的基础是通用语言运行时(CLR)。在程序运行时,它负责管理各类程序代码的执行,它能够自动实现代码的编译,自动管理内存的创建与释放,确保变量类型安全,实施代码安全性验证等工作。对于多线程的程序,它还提供了线程管理的功能。这些都是CLR的核心服务,为代码执行提供了一个高效的托管环境,为开发人员的提高程序开发效率和应用程序的可靠运行提供保障。

它有如下的核心功能:

在程序的第一步编译时,将程序通过对应的编译器编译为IL,并生成元数据。将IL和元数据打包,加入PE和CLR文件头使之成为托管模块,将各个模块打包为程序集(不过,语言编译器不被看作CLR的一部分)。

程序执行时,类型检查器负责保证类型安全(代码验证),即时编译器(JIT)负责将IL编译为机器码。

类型加载器(Class loader)负责通过清单和元数据探测类型的位置,并加载需要的类型,生成类型对象,包括方法表等。

方法调用。

自动内存管理和垃圾回收(COM使用引用计数,而CLR使用标记清除)。(www.xing528.com)

线程池管理。

字符串驻留池管理。

异常处理。

动态加载程序集(晚期绑定),这是和类型加载器交互的必然结果。

与COM组件的交互。

.NET里面的通用语言运行时是编译执行,它和Java的虚拟机JVM的解释执行不同,CLR是在应用程序首次被调用时,全部一次性编译成机器码后再执行。这样做有两个好处,一是避免了解释执行所带来的效率降低的问题,一次性编译后后续运行直接调用,效率得到明显提升;二是可以充分利用服务器本地资源,CLR能够个性化地针对本地资源实现优化编译,甚至从另一个角度来看,由于C++编译器是通用的,没有考虑不同的服务器上的资源的不同,这个功能很有可能在未来使.NET代码的执行效率远远超过C++。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈