根据GC的工作原理,我们可以通过一些技巧和方式,让GC运行更加有效率,更加符合应用程序的要求。 以下就是一些程序设计的几点建议。 1.最基本的建议就是尽早释放无用对象的引用。 大多数程序员在使用临时变量的时候,都是让引用变量在退出活动域(scope)后,自动设置为null。
摘自http://wz.csdn.net/url/781480/
-----------------------------------------------------------------------------------------------------------
上面最后一句话的意思是不是说即使引用变量退出活动域之后,该引用变量依然存在,垃圾回收器就不会回收该引用指向的对象?如果让垃圾回收器回收无用的对象,则只能显示该指向该对象的引用变量置为null或者重新指向一个对象?“大多数程序员在使用临时变量的时候,都是让引用变量在退出活动域(scope)后,自动设置为null。”对于这句话谁又能给一个例子?
摘自http://wz.csdn.net/url/781480/
-----------------------------------------------------------------------------------------------------------
上面最后一句话的意思是不是说即使引用变量退出活动域之后,该引用变量依然存在,垃圾回收器就不会回收该引用指向的对象?如果让垃圾回收器回收无用的对象,则只能显示该指向该对象的引用变量置为null或者重新指向一个对象?“大多数程序员在使用临时变量的时候,都是让引用变量在退出活动域(scope)后,自动设置为null。”对于这句话谁又能给一个例子?
String str=new String("Hello");
}
这样的情况,方法执行完后,引用变量str也就不存在了(自动退栈),但是它原来指向的对象依然在栈里面,这样看GC什么时候回收了.这个对象可能存在很长时间.GC也会根据内存状况决定是否进行回收.
str=null;
这样的写法肯定是方法中还有很多其他的代码,但是str到此已经没有用了,直接设置为null。这样str原来指向的对象就是GC可以回收的了 。
说是会自动回收垃圾的。
不过我对JAVA的自动回收的工作原理还不了解。所以不敢瞎说。