隨筆 - 0, 文章 - 75, 評論 - 0, 引用 - 0
          數據加載中……

          java垃圾回收

          簡單看了一下異常處理的課件,感覺內容還是可以的,不過少了自定義異常的知識,所以決定把自定義異常內容加入進去;當看到finally關鍵字的時候,想起年輕的時候找工作,經常被問到finally、final、與finalize之間的區別。

          finally和final都給介紹了,所以這里簡單說一下finalize。

          說道finalize這個關鍵字就要說道java的垃圾回收機制。

          在C++處理某實體時,當應用不需要某實體時,就需要調用delete關鍵字來告訴系統,我不需要這塊空間了,對于C++程序員來說,需要手動調用,所以是一個很麻煩很難做的事情,經常會看到一些技術網站昏天暗地地討論C++內存泄漏的話題,有些時候討論的激烈了,怕是只要見面就會動手了。

          在Java中程序員完全不用考慮實體銷毀,也就是只需要考慮實體聲明,具體如何銷毀實體是JVM要做的工作。

          JVM的垃圾回收機制是實時監控堆內存,當發現某些實體沒有引用時就會把這些實體放入垃圾回收列表中,但這些放入回收列表中的實體并不是馬上被銷毀,具體何時被銷毀,那就是JVM的垃圾回收算法做的處理了。

          但是很多人還是不放心垃圾回收,所以想要自己控制Java的垃圾回收,在這里我要告訴你這是不可能的;但是你可以做一些處理,告訴JVM需要做垃圾回收了,讓JVM提前做垃圾回收處理,或者可以說讓JVM清理垃圾更容易發生。有兩種方法可以實現以上需求,第一種是把堆內存中的引用變量移除,相當于告訴JVM我已經不用這個實體了;第二種是調用System.gc();調用這個方法后同樣可以讓JVM更容易發生垃圾回收。

          那這些和finalize有什么關系呢,在垃圾回收后,會自動調用finalize()方法,注意,這個方法是Object中的方法,所以任何實體類都可以調用這個方法,finalize()方法被稱作是垃圾回收的善后方法??慈缦吕印?br />

          public
          class T2 {

          private String
          name;


          public String getName()
          {
            return name;

          }

          public void setName(String name)
          {
            this.name =
          name;
          }

          public T2(String name)
          {
            this.name =
          name;
          }

          public
          static void main(String[] args){
           
          for(int i = 0 ; i< 100; i++){
           
          new T2("T"+i);
           
          }
           
          System.gc();//讓JVM更容易發生垃圾回收
          }

          //重寫垃圾回收善后的方法
          public void
          finalize(){
           
          System.out.println(this.getName());

          }
          }

          運行時會看到效果,如果去掉System.gc();這句話,幾乎看不到任何效果

          通過垃圾回收是不是對finalize有了進一步的了解?

          posted on 2012-04-22 15:15 hantai 閱讀(126) 評論(0)  編輯  收藏


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 阜新市| 桃源县| 顺义区| 中西区| 闻喜县| 辛集市| 灌南县| 贡觉县| 疏附县| 察隅县| 郧西县| 紫金县| 彝良县| 五指山市| 阿勒泰市| 铜陵市| 正蓝旗| 福州市| 高雄市| 教育| 镇远县| 长沙县| 清徐县| 海原县| 南漳县| 西贡区| 津市市| 台北县| 宁津县| 永平县| 安新县| 灌阳县| 博乐市| 突泉县| 铜陵市| 金湖县| 封丘县| 威远县| 贵州省| 栾城县| 车致|