<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆-199  評論-203  文章-11  trackbacks-0

            Java程序中也可能會發生內存泄露的問題,但是Java中引入了垃圾回收機制。這里所說的垃圾就是那些泄露的內存。
    在Java語言中,沒有引用句柄指向的類對象最容易成為垃圾。產生垃圾的情況有很多,主要有以下3種:
    (1)       超出對象的引用句柄的作用域時,這個引用句柄引用的對象就變成垃圾。
    例:

           Person p1 = new Person();
           ……

    引用句柄p1的作用域是從定義到“}”處,執行完這對大括號中的所有代碼后,產生的Person對象就會變成垃圾,因為引用這個對象的句柄p1已超過其作用域,p1已經無效,Person對象不再被任何句柄引用了。      
    (2)       沒有超出對象的引用句柄的作用域時,給這個引用句柄賦值為空時,這個引用句柄引用的對象就變成垃圾。
    例:

           Person p1 = new Person(); 
           …..
           p1 = null;
           ….

    在執行完“p1=null;”后,即使句柄p1還沒有超出其作用域,仍然有效,但它已被賦值為空,不再指向任何對象,則這個Person對象不再被任何句柄引用,變成了垃圾。此后p1還可以指向其它Person對象,因為還沒有超出它的作用域。
    (3)       創建匿名對象時,匿名對象用完以后即成垃圾。
    例:

    new Person();               //因為是匿名對象,沒有引用句柄指向它,即為垃圾
    new Person().print();
    //當運行完匿名對象的print()方法,這個對象也變成了垃圾
    ……

           因此,在程序中應盡量少用匿名對象。
    5.  Java中的對象銷毀
           Java語言沒有提供析構函數,要解決內存泄露的問題,要銷毀不再被引用的對象,就要借助其它方法,因此Java提供了一種非常好的機制:垃圾回收機制,即Garbage Collector,簡稱GC。
           在Java中,不再被引用的對象所占據的內存由一個低優先級的垃圾回收線程自動回收。這個線程是在我們程序的執行過程中在后臺持續運行的。在Java程序運行過程中,一個垃圾回收器會不定時地被喚起檢查是否有不再被使用的對象,并釋放它們占用的內存空間。垃圾回收器的回收無規律可循,可能在程序的運行的過程中,一次也沒有啟動,也可能啟動很多次。因此,并不會因為程序代碼一產生垃圾,垃圾回收器就馬上被喚起而自動回收垃圾,很可能到程序結束時垃圾回收器都沒有啟動。所以垃圾回收器并不能完全避免內存泄漏的問題。
        正因為垃圾回收器啟動的無規律性,Java又提供了一種強制啟動垃圾回收器的方法:System.gc()方法。在程序中顯式地加入這個語句,就會強制啟動垃圾回收器。垃圾回收器啟動后,就會等待時機釋放不再被引用的對象所占據的內存空間。但并不是一啟動垃圾回收器,它就馬上回收垃圾,如果這時有高優先級的線程仍在運行,回收垃圾的線程需要等待這個高優先級的線程執行完畢以后才可執行。
        另一方面,垃圾回收會給系統資源帶來額外的負擔和時空開銷。它被啟動的幾率越小,帶來的負擔的幾率就越小。因此,不提倡在程序代碼中加入大量的System.gc()語句。
        正因為垃圾回收器的自動回收功能,保證了Java開發的程序在長期運行期間產生比較少的內存泄露,提高了系統的性能,方便了用戶的使用。
     
    結束語
           在C++中,可能因為不恰當地使用new和delete語句,而導致不能銷毀某些對象,造成內存泄露,從而影響系統的性能;而Java提供了垃圾回收機制自動回收垃圾,銷毀不再使用的對象,使得內存泄露的可能性變得很小。

    posted on 2010-07-06 16:27 Werther 閱讀(1268) 評論(0)  編輯  收藏

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


    網站導航:
     
    主站蜘蛛池模板: 亚洲AV成人片色在线观看高潮| 久久伊人亚洲AV无码网站| 久久亚洲AV无码精品色午夜麻豆| 中国一级毛片免费看视频| 亚洲高清无码综合性爱视频| 国产成人亚洲午夜电影| 国产一区二区免费在线| 黄网站色视频免费看无下截| 国产免费观看a大片的网站| 深夜特黄a级毛片免费播放| jlzzjlzz亚洲乱熟在线播放| 春意影院午夜爽爽爽免费| 亚洲综合AV在线在线播放| 久久aⅴ免费观看| 久久久久亚洲av无码专区导航| 8x8x华人永久免费视频| 亚洲午夜成激人情在线影院| 无码一区二区三区免费视频| 亚洲成AV人影片在线观看| 俄罗斯极品美女毛片免费播放| 四虎影视永久在线精品免费| 亚洲人成人无码网www电影首页| 色欲色香天天天综合网站免费| 亚洲综合色一区二区三区小说| 欧洲乱码伦视频免费| 国产精品亚洲lv粉色| 亚洲一区精品伊人久久伊人 | 久久精品国产亚洲av麻豆| 24小时在线免费视频| 亚洲av无码专区在线| 亚洲国产精品尤物YW在线观看| 国产成人免费AV在线播放| 亚洲欧洲日韩综合| 啊灬啊灬别停啊灬用力啊免费看| 99视频在线免费观看| 国产精品亚洲四区在线观看| 亚洲成人影院在线观看| 日本免费污片中国特一级| 亚洲国产成人久久综合| 亚洲精品美女久久久久99| 免免费国产AAAAA片|