设置成null,那么垃圾回收才可能去收回这个对象
但是垃圾回收一般是在内存不够用的时候 才会做的
所以即使你设置成null,也不代表这个对象就马上能被回收所以我觉得一般情况下没必要去设置

解决方案 »

  1.   

    性能上没什么影响,a和list不过是引用,"this is a test!"和new ArrayList()才是对象,而a=null还有list=null只不过表示没有引用指向对象了,也就是说不能操作这个对象了,这时这个对象就成为“垃圾”,当垃圾回收器启动的时候就会自动回收这些对象。每声明一个新的对象都要在内存中开辟内存空间的,而没有引用所指向的对象既不能使用又占用空间,所以称为“垃圾”
      

  2.   

    那很多书上怎么说提倡set null啊?
      

  3.   

    不用这么强制写的,java的垃圾回收机制会自动回收垃圾的,而且这个机制不是即时的,所以就算你写上了,也不会被马上清楚的。
      

  4.   

    JAVA垃圾回收机制,只是在它超过所限定的一定大小内存的时候,对不使用的对象进行内存释放。将对象设置成null,没有去直接调用那个垃圾回收机制,所以我认为是没有太大必要的。
      

  5.   

    书上怎么瞎扯了?设置成null,可以让垃圾回收释放这个对象呀(当然要在没有被其他引用引用的时候),但是垃圾回收不是立即进行的。
    也就是说要等内存不够是垃圾回收程序才运行的,才会释放这个对象
    如果你要显示调用垃圾回收程序的话 
    可以在设置null之后加一句
    System.gc();
    显示调用垃圾回收程序
      

  6.   

    给你几个例子:
    1、如果采用static变量,你不设置为null的话,永远也释放不了。
    2、如果你不设置null的话,在这个当前对象释放之前,当前对象持有的对象永远释放不了
    3、如果对象a持有b,对象b持有c,对象c持有a,组成了一个链,那么这三个对象永远释放不了
    因此,对于容易出现问题的地方,比如说你内存紧张,又操作了大数据量的对象,比如说你发现他们有可能形成3的条件,你设置一下是有好处的,但不是所有的都要这样做,就像你说的,看起来难看。
      

  7.   

    java运行时应该考虑到这方面的问题,反正我在写程序的时候也每天太注意这方面的问题,运行大型程序时也没有见内存有用太多的