a一级爱做片免费观看欧美,久久国产一区二区,日本一二三区免费,久草视频手机在线观看

新聞中心

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

Java垃圾回收新算法

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

本文引用地址:http://www.j9360.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

評論


相關推薦

技術專區

關閉