1. 程式人生 > 實用技巧 >Java基礎之:finalize方法--瞭解垃圾回收機制

Java基礎之:finalize方法--瞭解垃圾回收機制

Java基礎之:finalize方法--瞭解垃圾回收機制

基本介紹: 當物件被回收時,系統自動呼叫該物件的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(),可以加速垃圾回收器回收時機,但是也不是確定的。