.NET体系结构
一、.NET编译的两个阶段
1)、将源代码编译为IL(Intermediate Language)
2)、CRL将IL编译为平台专用的代码。
三个特性:平台无关系、提高性能、语言的户操作性。
二、托管代码和非托管代码
托管代码:在CRL控制下执行的代码,可以获得公共语言运行库服务,例如自动垃圾回收、运行库类型检查和安全支持等。
非托管代码:在公共语言运行库环境的外部,由操作系统直接执行的代码。非托管代码必须提供自己的垃圾回收、类型检查、安全支持等服。
托管资源:是由公共语言运行的垃圾回收器进行分配和释放的数据;
非托管资源:在应用程序中使用完这些非托管资源之后,必须显示的释放他们。例如System.IO.StreamReader的一个文件对象,必须显示的调用对象的Close()方法关闭它,否则会占用系统的内存和资源,而且可能会出现意想不到的错误。
常见的非托管资源:COM/COM++组件,ActiveX控件,API函数,指针运算,自制的资源文件等。
如何释放非托管资源?
方法:(通过析构函数)重写Finalize()方法; 实现IDisposable()接口。
详细介绍参考文章:http://topic.csdn.net/u/20091029/08/20B3B82A-83EC-4D4F-997C-CF693F691A0D.htmls
三、IL(中间语言)的主要特性
1)、面向对象和使用接口
2)、值类型和引用类型
3)、强数据类型
4)、异常处理
5)、特性(attribute)
相关知识点:
1、CTS 和CLS
2、垃圾收集器:所有动态请求的内存分配到.NET托管堆上,当.NET检测到给定进程的托管堆已满时,就调用垃圾收集器,
垃圾收集器处理目前代码中的所有变量,检查对存储在托管堆上的对象的引用,没有引用的对象就不能再从代码中访问,因为将被删除。
可以在代码中调用垃圾收集器,从而提高效率。
3、应用程序域:将多个应用程序放在同一个进程中,从而共享数据,减少因进程间的通讯而损耗的效率。基础:CRL通过强大的类型安全功能,检查每个正在运行的应用程序的代码,确保它们不偏离自己的数据区域。
四、什么是程序集(简介)
编译好的,面向.net代码的逻辑单元,是完全自我描述性的。
五、.NET Framework 基类库和命名空间。
基础知识参考文章(堆栈和堆(托管堆))
http://www.cnblogs.com/SealedLove/archive/2009/02/13/1390278.html