0. 什么是资源? .NET 框架中如何访问资源?
所谓的资源就是程序中可利用的数据,譬如:字符串、图片和任何二进制数据,包括任何类型的文件。
在面向对象的环境中,每一个类型都标识为某些程序所用的资源,要想使用这些资源,必须为相应的类型分配一定的内存空间。
访问一个资源需要如下几个步骤:
1)分配内存空间: 调用中间语言(IL)中的newobj指令(使用new操作符时,将产生newobj指令),为某个特定资源的类型分配一定的内存空间。
2) 初始化内存: 一个类型的实例构造器负责这样的初始化工作。
3)使用资源: 通过访问类型成员来使用资源。根据需要会有反复。
4)销毁资源: 执行清理工作。
5)释放内存: 托管堆上的内存由GC全权负责, 值引用的在栈上的内存会随着栈空间的消亡而自动消失。
1. 什么是托管资源,非托管资源?
托管资源是由CLR全权负责的资源,CLR不负责的资源位非托管资源。
对于托管资源通过GC自动回收。
对于非托管资源GC管理,通过代码调用手动进行清除。
2. 什么是垃圾, 什么是垃圾回收?
Net类型分为两大类,一个就是值类型,另一个就是引用类型。前者是分配在栈上,并不需要G