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

Is it compulsory to assign null to a reference variable before reassigning a new object in java?

在将引用变量重新分配给新对象之前将其重新分配给 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");

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

即以下就足够了:

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

不,它不是强制性的,实际上没有任何用处。

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

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