Java的析構函數System的finalize()


一個對象是由產生 到使用 到銷毀的過程

即C++中 構造函數-> body->析構函數

在Java之中為了回收不需要的空間可以使用System類的finalize()

class A{
	public A(){
		System.out.println("A產生了!");
	}
	public void finalize(){
		System.out.println("A消亡了!");
	}
}
public class  Thrd{
	public static void main(String[] args) {
		A a=new A();
		a=null;//指向了其他,產生了垃圾
		System.gc();//手工回收垃圾
	}
}	

  結構:protected void finalize()Throws Throwable{}

  拋出的是Throwable(Error+Exception)也就是說不管是否有異常,都會講這個對象消亡

拋出異常測試:

class A{
	public A(){
		System.out.println("A產生了!");
	}
	protected void finalize() throws Throwable{
		System.out.println("A消亡了!");
		throw new Exception("產生了異常");//實例化異常類+拋出異常信息
	}
}
public class  Thrd{
	public static void main(String[] args) {
		A a=new A();
		a=null;//指向了其他,產生了垃圾
		System.gc();//手工回收垃圾
	}
}

  異常並沒有拋出

final finally finalize區別

final關鍵字 定義最終類,常量

finally異常的出口

finalize對象回收的的方法,即使出現異常也不會影響執行

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM