zoukankan      html  css  js  c++  java
  • 托管资源和非托管资源

         托管资源一般是指被CLR控制的内存资源,这些资源的管理可以由CLR来控制,例如程序中分配的对象,作用域内的变量等等。而非托管资源是CLR不能控制或者管理的部分,这些资源很多,例如文件流,数据库的连接,系统的窗口句柄,打印机资源等。这些资源一般情况下不存在与Heap中。

         CLR的GC功能只能释放托管资源,而对非托管资源,它不知道如何去释放它。这样就会出现当资源用尽时不能提供资源能够提供的服务,windows的运行速度就会变慢。所以,当我们在类中封装了对非托管资源的操作时,我们就需要显示或者隐式地释放这些资源。这里就分别会用到Finalize和Dispose方法。Finalize一般用于基类不带close方法或者不带Dispose显示方法的类。也就是说,在Finalize过程中我们需要隐式地去实现非托管资源的示范,然后系统会在Finalize过程完成后,自己去释放托管资源。如果要实现Dispose方法,可以通过实现IDisposable接口,这样用户在使用这个类的同时就可以显示地执行Dispose方法,释放资源。

  • 相关阅读:
    C# 访问AD查询用户信息
    js UTC时间转本地时间
    Silverlight中的序列化和反序列化
    ASP.NET FORM认证配置排错记录
    opencv中cvSetData用法
    WS2812B-64位 8*8位 RGB LED点阵
    1602 LCDKeypad Shield
    Wemos D1 使用ESP8266 板载存储
    Wemos D1 ESP8266的网络工作模式
    Wemos D1 1602 液晶屏幕
  • 原文地址:https://www.cnblogs.com/xuezhi/p/2804304.html
Copyright © 2011-2022 走看看