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

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

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

  • 相关阅读:
    RHEL安装oracle客户端(版本为11.2)
    为服务器设置固定IP地址
    RHEL配置本地yum
    网线水晶头内线排序
    《汇编语言(第三版)》王爽著----读书笔记01
    kali系统越来越大解决
    Markdown入门简介
    Linux之tail命令
    Linux之df命令
    Linux命令
  • 原文地址:https://www.cnblogs.com/xuezhi/p/2804304.html
Copyright © 2011-2022 走看看