新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > Java垃圾回收新算法

        Java垃圾回收新算法

        作者: 時間:2011-05-20 來源:網絡 收藏
        4.1.2具體

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

          (1)程序開始運行,對象動態地申請堆區,這時,每個塊的計數器啟動,根據引用對象的標記位情況來改變計數器的值,為1則計數器加1,8個計數器值放在數組里,并比較8個計數器值的大小,選取最大的計數器所在塊,進行掃描。

          (2)掃描出的轉移到刪除區,等待被刪除。

          (3)繼續比較計數器值,但已經進行掃描的塊不參加此后的比較,待刪除的占的空間達到min值時,器開始對活躍區壓縮內存碎片,并且在刪除區同時開始進行垃圾刪除申請。

          (4)當刪除區的空間達到了max值時,刪除區的垃圾還沒有被刪除,這時停止活躍區的掃描,等待刪除區進行垃圾刪除。

          4.2 實例分析

          看下面一段程序:

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

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

          m1=m2;

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

          對于原來的,m1引用的數組在堆中是隨機存放的,若要查找垃圾,則會遍歷整個堆內存,先標記,然后再清理垃圾。設耗費時間為Ta。

          m1引用的數組在堆中是隨機存放的,所以假設其放在活躍區中的cnt[x]區(x取值為0~7之一),下面分兩種情況來考慮:

          (1)最好的情況,m1原來引用的數組放在cnt1中為數組cnt[x]中最大的數,則查找到這個垃圾的時間為: T8+cnt[x]。

          

          由此可以節省7Ta/16的時間。此新可以大大減少垃圾處理所需的時間。

          語言對垃圾的處理是利用的垃圾處理器自動進行的,JVM雖然沒有明確程序員必須了解垃圾處理器的過程和實質,但是,一個優秀的程序員應該掌握和熟悉垃圾處理器的工作機制,充分利用好內存空間,減少不必要的空間浪費,從而使程序更好地運行。


        上一頁 1 2 3 下一頁

        關鍵詞: 算法 回收 垃圾 Java

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 万年县| 桂东县| 汤原县| 恩平市| 泸溪县| 乐平市| 康乐县| 密山市| 蕉岭县| 阿克苏市| 利津县| 鹤岗市| 枣庄市| 宁明县| 高要市| 唐河县| 清远市| 邹城市| 铜陵市| 额尔古纳市| 大竹县| 册亨县| 郴州市| 永修县| 鄯善县| 隆林| 大竹县| 阜宁县| 临洮县| 德化县| 黔西| 茌平县| 泸西县| 平和县| 马山县| 乌恰县| 文水县| 宜丰县| 正阳县| 莱州市| 衡山县|