何时应该使用obj = null
最近有一些体会,呵呵,也是对前面兄弟的回复
object = null有时候很有用,有时候一点用也没有,纯粹是浪费cpu,浪费读你代码人的感情(这点我深有体
会了),object = null的语句的目的是让某个对象的引用数为0,这样的话,当垃圾回收线程运行时候,会将该
对象占用的资源释放,使该对象真正的消失。理解这个目的再加上对变量作用域的理解,就很容易知道什
么时候该用,什么时候不该用了。
这里举几个例子
比如有个方法
void method1()
{
List l= new ArrayList();
向l中加入10000个对象;
使用或处理l; //到此l已经使用完毕
methodX(); //methodX()需要长时间执行;
}
对于这种情况,显然需要执行l = null;否则假如最后执行methodX(); ,执行了很长时间,这段时间gc执行
了好多次,但是l引用的对象一直却得不到释放,于是造成了白白的内存浪费,显然这样的代码不是最好
的。
假如后面的mehodX()换成了执行时间很短的代码(即使很多行),那就没有必要执行l = null了。
是不是需要使用l=null需要衡量的是,l是否占用足够多的内存空间。2,使用完后,l作用域范围内还需要执行的时间。3,使用l = null会使代码看起来很别扭。
再举一个不需要执行 "=null"的例子
method2()
{
.....
for(int i = 0;i<n;i++)
{
MyClass m ....
process(m);
m=null;
}
.....
}