隨筆 - 0, 文章 - 75, 評論 - 0, 引用 - 0
          數(shù)據(jù)加載中……

          java垃圾回收

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

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

          說道finalize這個關(guān)鍵字就要說道java的垃圾回收機制。

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

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

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

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

          那這些和finalize有什么關(guān)系呢,在垃圾回收后,會自動調(diào)用finalize()方法,注意,這個方法是Object中的方法,所以任何實體類都可以調(diào)用這個方法,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更容易發(fā)生垃圾回收
          }

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

          }
          }

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

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

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


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


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 木兰县| 南乐县| 镇赉县| 京山县| 富顺县| 张家界市| 连州市| 连江县| 弋阳县| 虎林市| 伊川县| 晴隆县| 临澧县| 太和县| 阿拉尔市| 屏山县| 汤原县| 额济纳旗| 合山市| 林口县| 六安市| 安龙县| 杭锦后旗| 万源市| 如东县| 闽清县| 正蓝旗| 扬州市| 五峰| 乌鲁木齐县| 苏尼特右旗| 纳雍县| 洛宁县| 保康县| 湛江市| 柏乡县| 鄢陵县| 本溪市| 简阳市| 浑源县| 梅州市|