1. 什么是资源?.NET框架中如何访问资源?
1)资源就是程序中可利用的数据,譬如:字符串,图片和任何二进制数据,包括任何类型的文件。
2)访问一个资源需要如下几个步骤
分配内存空间
初始化内存
使用资源
销毁资源
释放资源
2. 什么是托管资源,什么是非托管资源?
托管资源是由CLR全权负责的资源,CLR不负责的资源则为非托管资源。
托管资源由GC自动回收
非托管资源通过代码手动清除(StreamReader,FIleStream,数据库的连接,GDI+的相关对象,套接字,COM组件等)
3. 如何正确释放资源?
托管的内存资源,系统以及给为我们进行了管理。
对于非托管的资源,则需要我们手动清除。
如何去释放,.Net提供了三种方法,大致如下
1)析构函数
2)继承IDispisable接口,实现DIspose方法
3)提供Close方法
4. 什么是GC
GC是指垃圾回收。垃圾回收是指.NET清理托管堆上不会在被使用的对象所占用的内存,并且移动仍在被使用的活动对象,从而使他们所占的内存空间保持连续。垃圾回收仅需要2步即可完成执行过程。
程序员不需要手动干预GC垃圾回收的过程,但.NET中的CLR仍然提供了一个手动执行垃圾回收的GC.Collect()方法。但不建议成员员调用此方法。GC回收是一个相对耗费资源的过程,程序员应尽量减少不必要的垃圾回收次数。
5. 什么是代?
代是指GC将托管堆内的对象按照被调用的可能性的分类。GC按照被调用的可能性将托管堆内的对象分为3类,.NET将这样的分类定义为代。
依据.NET垃圾回收机制,0代,1代,2代的初始分配空间分别为256KB,2MB,10MB。代越小释放的几率就越高,但每一次GC释放对象时,仍然被使用的对象实例将被转移到下一代。
C#销毁资源,释放内存,GC垃圾回收
最新推荐文章于 2024-05-15 20:49:59 发布