在java中重新分配新对象之前,是否必须将null分配给引用变量



在将引用变量重新分配给新对象之前,将其重新分配为null是否会释放它用来保存的旧内存,或者这是垃圾回收器的工作?

Dog obj = new Dog("d1");
if(obj!=null)
obj = null; // will this release the memory?
obj = new Dog("d2");

Dog obj = new Dog("d1");
obj = new Dog("d2");

不,它不是强制性的,事实上也没有做任何有用的事情。

null分配给一个变量本身永远不会释放内存。它最多删除一个保持对象可访问性的引用,如果它是最后一个引用,那么该对象最终可能会被垃圾回收。

但是,将任何其他引用分配给该变量也会起到同样的作用(即删除对原始对象的引用(,因此在重新分配之前将null分配给它是不必要的步骤。

您不必这么做!垃圾收集器将以任何一种方式回收内存。

即以下内容就足够了:

Dog obj = new Dog("d1");
obj = new Dog("d2");

最新更新