zoukankan      html  css  js  c++  java
  • .Net垃圾回收机制

     

    Finalize,析构函数,Dispose,Close 

    语法方面

    每个类都会继承Object基类的Finalize方法,也可以重写它;但是Finalize方法比较特殊,不能像普通方法那样使用override关键字重写。Finalize(){ ~Class };调用Finalize就是调用类的析构函数;

    如果类没有析构函数,调用Finalize方法实际上什么都没执行。如果你想重写Finalize方法,就为类添加析构函数即可;类的析构函数能自动调用基类的Finalize方法;

    可以说Finalize方法就是析构函数;

    Close(){Dispose()};

    托管资源和非托管资源

    托管资源

    是指.NET可以自动进行回收的资源,主要是指托管堆上分配的内存资源。托管资源的回收工作不需要人工干预,由.NET运行库在合适时机(感到内存不足)调用垃圾回收器进行回收。

    非托管资源

    是指.NET不知道如何回收的资源,最常见的一类非托管资源是包装了操作系统资源的对象,例如文件,窗口,网络连接,数据库连接,画刷,图标等。

    这类资源,垃圾回收器在清理的时候会调用Object.Finalize()方法。默认情况下,方法是空的,对于非托管对象,需要在此方法中编写回收非托管资源的代码,以便垃圾回收器正确回收资源。

    在.NET中,Object.Finalize()方法是无法重载的,编译器是根据类的析构函数来自动生成Object.Finalize()方法的,所以对于包含非托管资源的类,可以将释放非托管资源的代码放在析构函数。

    垃圾回收机制

    回收一个不含托管资源的对象

    1,调用类的Finalize方法,因为无非托管资源

    2,

  • 相关阅读:
    SFDC_08(翻页功能)
    SFDC-07(图形)
    SFDC_06(Data Loader)
    SFDC_05(内部类)
    SFDC_03(覆盖率)
    vue项目搭建
    vue语法01
    IDEA 的逆向工程 mybatis generate tool 的使用
    Git: Git: There is no tracking information for the current branch.
    Tomcat 不一定 需要配置环境变量(startup.bat 闪退原因及解决办法)
  • 原文地址:https://www.cnblogs.com/maoshuyi/p/9751007.html
Copyright © 2011-2022 走看看