null在Java中分配未使用的对象引用是否以任何可测量的方式改进了垃圾收集过程?
我用Java语言(C#)的经验告诉我,经常是反直觉的,试图智取虚拟机或JIT编译器,但我已经看到同事用这个方法,我很好奇,如果这是一个很好的做法挑向上或那些巫术迷信编程的一个?
假设我有以下代码:
public void process() {
byte[] data = new byte[size];
... // code that uses the above data
longProcess(); // a very long running process that does not use the data.
}
Run Code Online (Sandbox Code Playgroud)
假设在程序中的数据不被引用其他地方,是JVM足够聪明,使数据成为而漫长的过程仍在运行垃圾收集?
如果没有,将添加
data = null;
Run Code Online (Sandbox Code Playgroud)
在漫长的过程之前允许这种情况发生?
public class A{
A a;
public static void main(String args[]){
A b = new A();//new object created, obj1
b.a = new A();//new object created, obj2
b = null;
//line 8
}
}
Run Code Online (Sandbox Code Playgroud)
当达到第8行时,obj1符合GC的条件.obj2也有资格获得GC吗?