堆栈(栈) 详见《c#高级编程》 第7章 内存管理和指针
速度快,存取值类型数据,分配时向下分配,内存指针始终指向最高的地址,编译器根据变量自己的生命周期分配或释放。
托管堆(堆)
速度慢,存储引用类型的实例,分配时向上分配,这与栈正好相反。

垃圾回收机制。
可以显示调用system.GC.Collect()方法,来调用垃圾回收器进行回收工作。但是垃圾回收器不能释放未托管的资源,如文件句柄、网络连接、数据库连接等。
.net 内存机制
对于非托管资源
1.使用析构函数,会有很多问题,因为垃圾回收器是定时运行的,所以不知道析构函数的执行时间,如果调用析构函数,需要处理两次才能删除对象。编译器自动将析构函数的调用转成Finalize方法。
2.Idisposable接口
对于需要清理非托管资源的类可以实现此接口,此接口的方法Dispose
可以调用实现了此接口的Dispose来释放非托管资源。
使用using也是调用Dispose方法。
3.一般两种机制结合 使用
原因:第一种方法有性能的问题,第二种方法必须保证程序员主动调用。
方案:如果主动调用dispose方法,释放托管和非托管资源,否则如果是析构函数调用则释放非托管资源。