GC-托管资源与非托管资源

作者:vkvi 来源:ITPOW(原创) 日期:2008-8-25

您或许已经在网上查到,托管资源就是这样的,非托管资源就是那样的,虽然他们给的概念是正确的,但您还是不太明白,希望来点实际点的解释。

int、double、bool、string、DateTime……这些类型是不是托管资源?

是的,相信您也认为是的。

SqlConnection、FileStream、Bitmap、Graphics……这些是不是托管资源呢?

应该这么说:它们是托管资源,但管理着非托管资源。怎么理解呢?就好比国家领导:虽然他来自某个省,但他还管着其它省;虽然他是男的,但他还管着女的。

它们所占有的非托管资源由他们自己清理,而不是垃圾回收器清理(垃圾回收器没办法清理非托管资源)。当垃圾回收器回收这些对象,这些对象在被回收时又去清除它们所占有的非托管资源,这就实现了清理所占有的所有资源。

可以看出,虽然这些类管理着非托管资源,但使用起来,似乎可以完全不用考虑这些非托管资源。

作为类使用者,上面的信息就足够了,但作为类设计者,当您设计的类管理着非托管资源时,或者要快速释放资源时,如何达到上面的那些类的效果呢?请继续阅读本连载。

相关文章