C#销毁资源,释放内存,GC垃圾回收

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释放对象时,仍然被使用的对象实例将被转移到下一代。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值