DataTable dt=new DataTable();
// 对dt经行数据添加操作 略....dt=new DataTable();
dt
现在问C#垃圾回收机制如何回收dt第一次实例化时新建的对象,以及何时回收.我个人认为:第一次实例化时新建的对象已经成为内存垃圾,不能回收,请大家踊跃发表意见.学习学习

解决方案 »

  1.   

    在 C# 中,垃圾回收由与 JVM 的功能类似的公共语言运行时 (CLR) 处理。CLR 垃圾回收器定期检查内存堆中是否有任何未引用的对象,并释放这些对象占用的资源。
    http://msdn.microsoft.com/zh-cn/library/f144e03t.aspx
    http://msdn.microsoft.com/zh-cn/library/0xy59wtx.aspx
      

  2.   

    如果对象(从Stack分配的对象)不再被其它任何对象引用,该对象就被定义为Garbage; 由CLR的GC机制在某个时候回收。
      

  3.   

    如果不想让系统自动回收,楼主可以自己尝试
    GC.Collect()
    和GC.Collect(int index); index=> 0/1/2为不可达对象(垃圾)的代龄;
      

  4.   

    如果你想显示的释放还可以调用对象的dispose方法.
      

  5.   

    对象被垃圾回收的时间是不确定的,可能即时回收,也可能延时回收,这个时间也无法得知,你也没办法去控制,所以微软建议如果你的类占用了系统资源的话,最好调用该对象的dispose,来释放所占的外部资源。
      

  6.   

    即使用了GC.Collect(),也不一定立即回收,还会影响效率