Java基礎之:finalize方法--瞭解垃圾回收機制
阿新 • • 發佈:2020-12-11
基本介紹: 當物件被回收時,系統自動呼叫該物件的finalize方法。子類可以重寫該方法,做一些釋放資源的操作
什麼時候被回收:當某個物件沒有任何引用時,則jvm就認為這個物件是一個垃圾物件,就會使用垃圾回收機制來銷燬該物件,在銷燬該物件前,會先呼叫finalize方法。
垃圾回收機制的呼叫,是由系統來決定, 也可以通過System.gc() 主動觸發垃圾回收機制.
簡單案例
package object; /** * finalize 主要是在面試中問到,但實際應用中 不重寫此方法。沒有必要 * finalize()方法:在垃圾被回收之前一定會呼叫的方法。 * System.gc(); 主動觸發垃圾回收 */ public class Finalize_gc { public static void main(String[] args) { AA a = new AA("小范"); a = null; //我們理解的這個時候本應該是垃圾被回收了 // 但垃圾回收是到一定的時間之後才會回收。 //就好像,現在我們丟了一個垃圾在垃圾桶裡,我們會第二天上午才去倒掉垃圾桶裡面的垃圾 //主動觸發垃圾回收 System.gc();//垃圾回收,在程式的最後,才執行。 System.out.println("程式結束..........."); } } class AA{ private String name; public AA(String name) { super(); this.name = name; } public String getName() { return name; } public void setName(String name) { this.name = name; } @Override protected void finalize() throws Throwable { System.out.println("回收:" + name); } }
輸出
程式結束...........
回收:小范
垃圾回收器介紹
1) 當物件沒有任何引用指向時,垃圾回收器就會將其當做垃圾,進行回收。
2) 垃圾回收器回收時機是不確定的,和當前系統有關係
3) System.gc(),可以加速垃圾回收器回收時機,但是也不是確定的。