Q-->question        A-->answer        M-->mention
          The Chapter 20th Garbage Collection

M:确保终结操作使用CriticalFinalizerObject类型
  在System.Runtime.ConstrainedExecution中定义了一个名为CriticalFinalizerObject类型,CLR以特殊方法对待此类.
  1.首次构造派生于此类的任何对象时,CLR将会对层次关系中所有的Finalize方法进行JIT编译,其确保对象 可收集时,本地资源释放
  2.CLR在调用非派生自此类的Finalize()后,调用派生自此类的Finalize()
  3.如果程序域被一个宿主应用程序中断,那么CLR也将调用派生于此类的Finalize()

M:使用SafeHandle类型实现非托管代码之间的互操作,此类位于Microsoft.Win32中

Q:有哪些事件将会导致Finalize()被调用?
A:1.第0代对象充满  ---此为最常见
  2.代码显式地调用System.GC的静态方法Collect()
  3.Windows报告内存不足
  4.CLR卸载应用程序域
  5.CLR关闭

7:using语句有何作用?
 1.引入命名空间
 2.起别名
 3.释放宝贵资源,相当于try{} finally { xx.Dispose(); }
 使用其初始化一个变量,然后在与其匹配的大括号中访问此变量,编译器将自动产生一个try和一个finally语句块,在finally块中,编译器会产生将此变量转型为一个IDisposable接口,并调用其Dispose(),显然using只能用于那些实现了IDisposable接口的类型

posted on 2007-06-27 11:28  晓木  阅读(163)  评论(0编辑  收藏  举报