华南俳烁实业有限公司

java

當(dāng)前位置:中華考試網(wǎng) >> java >> java問答庫 >> 文章內(nèi)容

Java析構(gòu)方法是什么?

來源:中華考試網(wǎng)  [2020年11月16日]  【

  析構(gòu)方法與構(gòu)造方法相反,當(dāng)對象脫離其作用域時(例如對象所在的方法已調(diào)用完畢),系統(tǒng)自動執(zhí)行析構(gòu)方法。析構(gòu)方法往往用來做清理垃圾碎片的工作,例如在建立對象時用 new 開辟了一片內(nèi)存空間,應(yīng)退出前在析構(gòu)方法中將其釋放。

  在 Java 的 Object 類中還提供了一個 protected 類型的 finalize() 方法,因此任何 Java 類都可以覆蓋這個方法,在這個方法中進(jìn)行釋放對象所占有的相關(guān)資源的操作。

  對象的 finalize() 方法具有如下特點:

  垃圾回收器是否會執(zhí)行該方法以及何時執(zhí)行該方法,都是不確定的。

  finalize() 方法有可能使用對象復(fù)活,使對象恢復(fù)到可觸及狀態(tài)。

  垃圾回收器在執(zhí)行 finalize() 方法時,如果出現(xiàn)異常,垃圾回收器不會報告異常,程序繼續(xù)正常運行。

  例如:

  protected void finalize() { // 對象的清理工作}

  填寫下面表單即可預(yù)約申請免費試聽java課程!害怕學(xué)不會?助教全程陪讀,隨時解惑!擔(dān)心就業(yè)?一地學(xué)習(xí),可全國推薦就業(yè)!

預(yù)約申請免費聽java課程

  • 地區(qū):
  • 姓名:
  • 手機:

  例 1

  下面通過一個例子來講解析構(gòu)方法的使用。該例子計算從類中實例化對象的個數(shù)。

  1)Counter 類在構(gòu)造方法中增值,在析構(gòu)方法中減值。如下所示為計數(shù)器類 Counter 的代碼:

  public class Counter { private static int count = 0; // 計數(shù)器變量 public Counter() { // 構(gòu)造方法 this.count++; // 創(chuàng)建實例時增加值 } public int getCount() { // 獲取計數(shù)器的值 return this.count; } protected void finalize() { // 析構(gòu)方法 this.count--; // 實例銷毀時減少值 System.out.println("對象銷毀"); }}

  2)創(chuàng)建一個帶 main() 的 TestCounter 類對計數(shù)器進(jìn)行測試,示例代碼如下:

  public class TestCounter { public static void main(String[] args) { Counter cnt1 = new Counter(); // 建立第一個實例 System.out.println("數(shù)量:"+cnt1.getCount()); // 輸出1 Counter cnt2 = new Counter(); // 建立第二個實例 System.out.println("數(shù)量:"+cnt2.getCount()); // 輸出2 cnt2 = null; // 銷毀實例2 try { System.gc(); // 清理內(nèi)存 Thread.currentThread().sleep(1000); // 延時1000毫秒 System.out.println("數(shù)量:"+cnt1.getCount()); // 輸出1 } catch(InterruptedException e) { e.printStackTrace(); } }}

  執(zhí)行后輸出結(jié)果如下:

  數(shù)量:1

  數(shù)量:2

  對象銷毀

  數(shù)量:1

  技巧:由于 finalize() 方法的不確定性,所以在程序中可以調(diào)用 System.gc() 或者 Runtime.gc() 方法提示垃圾回收器盡快執(zhí)行垃圾回收操作。

責(zé)編:fushihao

上一篇:什么是Oracle數(shù)據(jù)庫?

下一篇: 沒有了

  • 會計考試
  • 建筑工程
  • 職業(yè)資格
  • 醫(yī)藥考試
  • 外語考試
  • 學(xué)歷考試
天长市| 江都市| 伊宁县| 吴江市| 锦州市| 青州市| 房山区| 杭锦旗| 基隆市| 连州市| 和顺县| 喜德县| 准格尔旗| 鲜城| 阳新县| 南汇区| 通许县| 伊吾县| 二连浩特市| 晋州市| 仙游县| 宣汉县| 和静县| 漳平市| 洪雅县| 鲁甸县| 密云县| 都昌县| 黑龙江省| 光山县| 仪征市| 关岭| 铜川市| 天门市| 明光市| 麟游县| 南岸区| 泰来县| 婺源县| 红河县| 西贡区|