先上代码吧,我的目的是让data这个数据彻底消失
public class Test {
public static void main(String[] args) {
Data data = new Data();
data.num = 10;
Data new1 = data;
Data new2 = data;
new2 = null;
data = null;
System.out.println(new1.num);
}
}
class Data {
int num;
}
我知道java的垃圾回收机制,只有有东西还在引用他,他就不会消失,像上面的代码依然能够正常输出10.
但是我想知道该怎么做,能让System.out.println(new1.num);
抛出null
异常,即彻底没有这个数据
不要说让new1=null
就行
你自己都说了"我知道java的垃圾回收机制,只有有东西还在引用他,他就不会消失", "new1"这个变量还在引用 "new Data()"在堆里那块内存,怎么可能会让他被回收,这样我们写的代码不全是空指针异常。你可以使用WeakReference,而不是强引用。