....
//--创建类实例
MyClass obj1=new MyClass();//--引用
MyClass obj2=obj1;//--释放
obj1=null;//--查看obj2
if(obj2!=null)  //--?????按理说这个obj2也应该为null
  error("不为空");....
class MyClass
{
   
}

解决方案 »

  1.   

    if(obj2!=null)  //--?????按理说这个obj2也应该为null
    =========>
    当然不为nullobj1与obj2同时指向引用MyClass的一个实例,
    obj1 = null; 这不是释放,obj1不再引用MyClass的实例,但obj2仍在引用。
      

  2.   

    obj1=null;
    作用把obj1这个引用变量设置为空引用
    至于obj1之前引用什么对象,对那个对象是没有任何影响的
    比如:
    A和B都喜欢C
    现在A不喜欢C了
    那B还是喜欢C
      

  3.   

    obj1.dispose()这个方法应该可以的吧.?
      

  4.   

    obj1.dispose()
    应该也不会让GC立即回收obj1吧,GC会自己选择时间执行垃圾回收
    调用GC.Collect()应会立刻回收
    对垃圾回收不是很了解,建议看下<<.NET框架程序设计>>相关的章节
      

  5.   

    obj1.dispose()是显式回收外部资源,比如关闭文件等(当然,这就要你自己来写了),内存资源的释放,还得依靠垃圾回收器,垃圾回收器定期回收内存资源,Avoid(千金散尽还复来) 说得对,只要引用还在,那么是不会执行垃圾回收的,即使垃圾回收定期触发,也不会回收有引用的内存资源。其实,form类提供的Dispose函数就是一个典型的例子:
    /// <summary>
    /// 清理所有正在使用的资源。
    /// </summary>
    protected override void Dispose( bool disposing )
    {
    if( disposing )
    {
    if (components != null) 
    {
    components.Dispose();
    }
    }
    base.Dispose( disposing );
    }如果你要显式回收资源,就可以调用窗体对象.Dispose(),这个函数声明,实际上是调用上面的重载形式:
    private void Dispose()
    {
       Dispose(true);//释放所有与窗体对象关联的控件对象占用的外部资源
    }
    如果垃圾回收器回收资源,会自动调用析构函数,当然,在IDE里你是看不到的,被封装了,应该是下面的形式:
    ~Form()
    {
       Dispose(false);//仅释放窗体对象的外部资源,至于控件所占用的外部资源,说不定在窗体                  对象释放前,就已经被释放了,因为垃圾回收器自动回收是没有顺序的
                        因此你只管对象本身就行了
    }
      

  6.   

    设置为null 了 并没有释放掉空间,只有当gc调用给dispose 才release
      

  7.   

    两个指向同一地址的变量(obj1、obj2),你只释放了obj1,obj1不再指某对象,
    为null,但原对象还在,你并没有释放obj2,obj2还是指向该对象,当然不为null啦!
      

  8.   

    最好不要把null赋给任一个变量,毫无意义的事情
    比如你有连接到数据库的连接,或是对文件进行操作的句柄,赋给null没有用的
    要显示调用XXX.close();  或是 XXX.dispose();
    等下一轮垃圾回收线程对分配的空间或资源进行释放
    GC工分成0,1,2代区
    0代最小,小到能装到寄存器缓冲区里,等0代回收完之后,没有释放的资源便自动放到1代中了,依次类推
    GC.Collect();  //将对0,1,2代区都进行垃圾回收
    GC.Collect(0);//将对0代区都进行垃圾回收
    GC.Collect(1);//将对0,1代区都进行垃圾回收
    GC.Collect(2);//将对0,1,2代区都进行垃圾回收,跟GC.Collect();效果一样