开始说垃圾回收之前先说说托管资源和非托管资源。
先来说说是什么托管资源和非托管资源:托管资源一般是指被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 }
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.
}
{
// Use font3 and font4.
}