C#之垃圾回收心得体会

本文介绍了托管资源与非托管资源的区别,并详细说明了如何通过实现Dispose方法、使用using语句及通过GC类来管理资源和进行垃圾回收。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

开始说垃圾回收之前先说说托管资源和非托管资源。

先来说说是什么托管资源和非托管资源:托管资源一般是指被CLR控制的内存资源,这些资源的管理可以由CLR来控制,例如程序中分配的对象,作用域内的变量等。这部分的资源是可以被垃圾回收器自动回收的;非托管资源自然就是不被CLR控制的资源,垃圾回收器无法对其实现自动回收了。

那么如何及时的清理使用完毕的资源呢?

答案是:

实现Dispose方法

Finalize方法和析构函数

通过GC类进行强制回收

清理对象使用的资源就让对象实现Dispose方法,Dispose方法释放它拥有的所有资源。它还应该通过调用其父类型的 Dispose 方法应该释放它拥有的所有资源并同样也调用其父类型的 Dispose 方法,从而在整个基类型层次结构中传播此模式。若要确保始终正确地清理资源,Dispose 方法应该可以被多次调用而不引发任何异常。

using语句

<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->1 Font font2 = new Font("Arial"10.0f);
2 using (font2)
3 {
4     // use font2
5 }

 

 

<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->using (Font font3 = new Font("Arial"10.0f),font4 = new Font("Arial"10.0f))
{
    
// Use font3 and font4.
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值