且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

垃圾回收 - java 如何手动回收对象

更新时间:2022-10-15 17:51:59

你自己都说了"我知道java的垃圾回收机制,只有有东西还在引用他,他就不会消失", "new1"这个变量还在引用 "new Data()"在堆里那块内存,怎么可能会让他被回收,这样我们写的代码不全是空指针异常。你可以使用WeakReference,而不是强引用。

    WeakReference<Data> new1 = new WeakReference(data);
    Data new2 = data;
    new2 = null;
    data = null;
    System.gc();//告诉垃圾收集器打算进行垃圾收集,而垃圾收集器进不进行收集是不确定的 ,所以下面延迟2秒
    try {
      Thread.sleep(2000);
    } catch (InterruptedException e) {
      e.printStackTrace();
    }
    System.out.println(new1.get().num);