。net内存机制包括堆和栈

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

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

转载于:https://www.cnblogs.com/yours369000/archive/2009/08/20/1550640.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值