在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            Java垃圾回收新算法

            作者: 時間:2011-05-20 來源:網(wǎng)絡(luò) 收藏

            從誕生以來以其在網(wǎng)絡(luò)應(yīng)用開發(fā)上獨(dú)特的魅力以及“一次開發(fā),隨處運(yùn)行”的可移植性引起了人們極大的興趣。與以往的高級語言如C/C++相比,在開發(fā)方面具有很大的優(yōu)勢,其中以對象內(nèi)存管理機(jī)制中的處理機(jī)制(GC)最為突出。

            本文引用地址:http://www.biyoush.com/article/150730.htm

              1 C/C++與對象內(nèi)存管理差別

              C/C++將內(nèi)存劃分成四部分:數(shù)據(jù)區(qū)、代碼區(qū)、棧區(qū)、堆區(qū)。Java則把內(nèi)存劃分成三部分即代碼區(qū)、棧區(qū)、堆區(qū),代碼區(qū)主要用于存放程序的代碼,棧區(qū)主要用于存放局部變量、內(nèi)部變量等中間性變量,堆區(qū)主要用來存放對象。

              C/C++中的對象內(nèi)存管理是通過語句new()/delete()或malloc()/free()進(jìn)行申請和釋放的。用new()或malloc()申請內(nèi)存后,若不使用delete()或free()進(jìn)行釋放,則所申請的內(nèi)存一直被占用,即使不使用也不能自動釋放,必須人為釋放,導(dǎo)致編程工作很繁瑣。

              Java中的對象內(nèi)存管理則改進(jìn)了對內(nèi)存的釋放過程,使用new()或其他方法申請的內(nèi)存在不使用時,可以自動進(jìn)行處理,釋放內(nèi)存,從而節(jié)省內(nèi)存,使內(nèi)存的使用更加高效、合理。

              Java中可以通過三種方法來銷毀對象實(shí)現(xiàn)內(nèi)存釋放,這三種方法被稱為Java銷毀對象的三把利劍:器;finalize方法;利用System.gc方法強(qiáng)制啟動垃圾器。

              垃圾是一種動態(tài)存儲管理技術(shù),它自動地釋放不再被程序引用的對象,按照特定的垃圾收集實(shí)現(xiàn)資源自動回收的功能系統(tǒng),會自動進(jìn)行GC策略。

              2 GC概述

              Java垃圾處理主要是針對堆的管理,對堆中不使用的空間進(jìn)行回收處理。判斷一個對象的內(nèi)存空間是否無用的標(biāo)準(zhǔn)是:如果該對象不能再被程序中任何一個“活動的部分”所引用,此時該對象的內(nèi)存空間已經(jīng)無用。所謂“活動的部分”,是指程序中某部分參與程序的調(diào)用,正在執(zhí)行過程中,尚未執(zhí)行完畢。

              具體以下兩例予以說明:

              實(shí)例1:

              int [][]matrix=new int [2][3];

              matrix=null;

              此例中,第一句是用new語句在堆中為數(shù)組申請了一個空間,然后用matrix來引用此空間的對象(這里數(shù)組可以理解為對象),此時這個內(nèi)存空間就是有用的。第二句是給matrix賦空值,matrix則不再引用此數(shù)組。此時,這個空間就是無用的。

              實(shí)例2:

              int [][] m1=new int[2][3];

              int [][] m2=new int[2][3];

              m1=m2;

              此例中,第一句是用new語句在堆中為數(shù)組申請了一個空間,用m1引用這個數(shù)組。第二句是用new語句在堆中為數(shù)組申請了一個空間,用m2引用這個數(shù)組。第三句是改變引用對象,把m2的引用賦給m1,則此時m1也引用m2引用的對象數(shù)組,因此,m1原來引用的數(shù)組無人引用,成為垃圾。


            上一頁 1 2 3 下一頁

            關(guān)鍵詞: 算法 回收 垃圾 Java

            評論


            相關(guān)推薦

            技術(shù)專區(qū)

            關(guān)閉