托管资源与非托管资源

托管资源与非托管资源

1、基础知识准备:

C#中的数据类型分为两种:值类型(int,char,double等)和引用类型(数组,用户自定义类型(包括类,接口,委托),object,字符串),对应也就有值类型的变量和引用类型的变量;面向对象编程中,简单数据类型是存放值的变量,这种变量关心的是值,因而称为值类型,另外,C#在堆(Heap)中创建和维护对象(一般是类),程序使用对象的存储地址来引用这个对象,这类用来保存地址的变量被称为引用类型变量;一个程序运行时,变量主要存放在“堆”和“栈”中,“栈”中主要用于存放“子函数的临时变量,局部变量”,“堆”中主要用于存放“全局变量,静态变量,new产生的变量”,托管资源主要研究的是“堆中的变量”吧

2、对“托管资源”的理解?

托管即托付管理,.Net中时托付给CLR(Common Language Runtime—公共语言运行时)管理(注:CLR提供内存管理机制GC-garbage collection);

资源指的是系统内存空间,可以是程序中建立的对象,作用域内的变量等;

托管资源合起来就是指被CLR控制的内存空间(资源),这些资源的分配与释放可由CLR完成,因而减轻程序员的负担;

3、“非托管资源”:不属于CLR管理(分配和释放内存),主要包括文件流、数据库的连接,COM对象,打印机资源等等;

4、“托管资源”与“非托管资源”的释放?

托管资源的释放由GC完成,非托管资源的释放有两种方法:

(1)实现protected void Finalize()来释放,因为GC在释放对象时会检查该对象是否实现了Finalize()方法,如果是则调用它,但这样会降低效率;

(2)通过实现一个接口显式地提供给客户端手工释放对象的方法,而不是等着GC来释放:System 命名空间内有一个 IDisposable 接口,拿来做这事非常合适

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值