天天看點

Object的finalize()方法的作用是否與C++的析構函數作用相同Object的finalize()方法的作用是否與C++的析構函數作用相同 Java中強引用、軟引用、弱引用、虛引用有什麼用

Object的finalize()方法的作用是否與C++的析構函數作用相同

Object的finalize()方法的作用是否與C++的析構函數作用相同Object的finalize()方法的作用是否與C++的析構函數作用相同 Java中強引用、軟引用、弱引用、虛引用有什麼用
public class Finalization {
    private static Finalization finalization;
    /**finalize在gc回收中有不确定性,是以不推薦用finalize進行回收*/
    @Override
    protected void finalize(){
        System.out.println("finalized");
        //System.gc()時,這一步可能沒有被執行到就終止了,是以可能為null或對象位址。
        //可以讓線程睡眠執行此步驟
        finalization=this;
    }

    public static void main(String[] args) {
        Finalization f = new Finalization();
        System.out.println("first print: "+f);
        f= null;
        //調用Finalization的finalize方法
        System.gc();
        try {
            Thread.sleep(1000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        System.out.println("second print: "+f);
        System.out.println(finalization);
    }
}
           

未加入線程休眠的代碼,發現finalization可能輸出為null

first print: com.gclhaha.javabasic[email protected]
second print: null
finalized
null
           

加入休眠代碼後 

first print: [email protected]
finalized
second print: null
[email protected]
           

Java中強引用、軟引用、弱引用、虛引用有什麼用

強引用

Object的finalize()方法的作用是否與C++的析構函數作用相同Object的finalize()方法的作用是否與C++的析構函數作用相同 Java中強引用、軟引用、弱引用、虛引用有什麼用
軟引用

Object的finalize()方法的作用是否與C++的析構函數作用相同Object的finalize()方法的作用是否與C++的析構函數作用相同 Java中強引用、軟引用、弱引用、虛引用有什麼用

軟引用還可以配合引用隊列去使用

弱引用

Object的finalize()方法的作用是否與C++的析構函數作用相同Object的finalize()方法的作用是否與C++的析構函數作用相同 Java中強引用、軟引用、弱引用、虛引用有什麼用

弱引用還可以配合引用隊列去使用

虛引用

gc在回收對象時,這個對象具有虛引用,那麼在回收前,回将虛引用加入引用隊列中,通過判斷引用隊列中是否加入虛引用來了解被引用的對象是否被gc回收,可以起到哨兵的作用。

軟引用和弱引用也可以先像上面這樣配合ReferenceQueue使用。

Object的finalize()方法的作用是否與C++的析構函數作用相同Object的finalize()方法的作用是否與C++的析構函數作用相同 Java中強引用、軟引用、弱引用、虛引用有什麼用

總結
Object的finalize()方法的作用是否與C++的析構函數作用相同Object的finalize()方法的作用是否與C++的析構函數作用相同 Java中強引用、軟引用、弱引用、虛引用有什麼用

Object的finalize()方法的作用是否與C++的析構函數作用相同Object的finalize()方法的作用是否與C++的析構函數作用相同 Java中強引用、軟引用、弱引用、虛引用有什麼用