垃圾收集:是否收集对象

Shi*_*wan 3 java garbage-collection

可能重复:
将Java对象设置为null是否会再执行任何操作?

我在一个方法中一次又一次地使用相同的变量并且多次将它引用到一个新对象.从垃圾收集方面来看,它是一个很好的做法,在使它引用一个新对象之前使其无效.

例:

StopWatch watch = new StopWatch();
watch.start();
//some code
watch.stop();
//some code
watch = null;
watch = new StopWatch();
watch.start();
//some code
watch.stop();
//some code
Run Code Online (Sandbox Code Playgroud)

在这种情况下,不确定是否使其无效会对GC产生影响.请指导.

谢谢!

Ste*_*n C 7

此时分配null将没有任何区别,因为您将立即为该变量分配新值.

Java中没有关于赋值null给变量的"神奇" .它不会导致对象立即被垃圾收集.它正在做的就是破坏(可能)许多"路径"之一,通过它可以获得有问题的对象.如果路径在下一次GC运行之前自行中断/消失,则分配null不会实现任何结果.

通常,不值得在Java中对变量或字段进行归零,对于局部变量即将被覆盖或即将超出范围而言,当然不值得做.