Msad的解释 .netFramework是为其运行的应用程序提供各种服务的托管执行环境 主要组件公共语言运行时(CLR) 和.Net Framework.
托管代码和非托管代码
托管代码就是Visual Baseic .NET和C#编译器编译出来的代码,托管代码在公共语言运行库(CLR)中运行
非托管代码是运行在公共语言运行库环境(CLR)的外部,由操作系统直接执行的代码。
非托管代码必须提供自己的垃圾回收、类型检查、安全支持等服务
区别:
1、托管代码是一种中间语言,运行在CLR上;
非托管代码被编译为机器码,运行在机器上。
2、托管代码独立于平台和语言,能更好的实现不同语言平台之间的兼容;
非托管代码依赖于平台和语言。
3、托管代码可享受CLR提供的服务(如安全检测、垃圾回收等),不需要自己完成这些操作;
非托管代码需要自己提供安全检测、垃圾回收等操作。
4、.Net有很多非托管的资源,比如StreamWriter、 Timer、数据库连接。
程序集中包含了一张叫做"清单"的模块,记录了构成程序,集模块构成的信息包括资源文件及需要引用自己的信息.
垃圾回收GC
GC.Collect()方法 作用:强制进行垃圾回收
GC工作原理:GC遍历应用程序在Heap(堆)上动态分配的所有对象,通过识别它们是被引用来确定哪些对象已经死亡的,
哪些仍需要被使用,已经不再被应用程序所引用的对象就是已经死亡的对象,所谓的垃圾,需要被回收
①GC,并不是能释放所有资源,他不能自动释放非托管资源.
②GC并不是实时性的,这讲会造成系统性能能上的瓶颈和不确定性
CTS (Common Type System)通用类型系统
CTS定义了一个类型库,无论时Visual Basic.NET还是c#,他们的类型系统大体类似。因此.NET将各种不同的编程语言的数据类型进行抽象,就有了CTS。虽然每种编程语言都有自己的类型系统,但编译后都会转成CTS类型。不同的语言编写的程序直间可以相互操作。Vb的integer而C#的System.Int32都对应CTS的System.Int32类型。
CTS类型主要分成两大类:引用类型和值类型,这两个类型可以相互转换,方法是装箱和拆箱。
CLS (Common Language Specification)公共语言规范
公共语言运行库支持的语言功能的子集,包括几种面向对象的编程语言的通用功能。符合 CLS 的组件和工具能够保证与其他符合 CLS 的组件和工具交互操作。
CLR (Common Language Runtime)公共语言运行时(也有的叫公共语言运行库)
CLR叫做公共语言运行时(Common Language Runtime),它是所有.NET应用程序运行时环境,是所有.NET应用程序都使用的编程基础,它如同一个支持.NET Framework,
运行一个.NET程序也必须安装。公共语言运行时遵循公共语言架构的标准,能够使C++、C# 、Visual Basic、以及JScript等多种语言深度集成。
JIT (Just in time)即时编译器
JIT是一种提高程序运行效率的方法。通常,程序有两种运行方式:静态编译与动态解释。静态编译的程序在执行前全部被翻译为机器码,而动态解释执行的则是一句一句边运行边翻译。
CLI 公共语言基础架构(Common Language Infrastructure)
BCL 基础类库(Base Class Library)
基础类库(BCL)是微软所提出的一组标准库,可提供给 .NET Framework 所有语言使用。
FCL 框架类库(Framework Class Library)