常用的垃圾回收算法有四種:標記-清除算法、復制算法、標記-整理算法、分代收集算法。
1.標記-清除算法
分為標記和清除兩個階段,首先標記出所有需要回收的對象,標記完成后統一回收所有被標記的對象,如下圖。
缺點:標記和清除兩個過程效率都不高;標記清除之后會產生大量不連續的內存碎片。
2.復制算法
把內存分為大小相等的兩塊,每次存儲只用其中一塊,當這一塊用完了,就把存活的對象全部復制到另一塊上,同時把使用過的這塊內存空間全部清理掉,往復循環,如下圖。
缺點:實際可使用的內存空間縮小為原來的一半,比較適合。
3.標記-整理算法
先對可用的對象進行標記,然后所有被標記的對象向一段移動,最后清除可用對象邊界以外的內存,如下圖。
4.分代收集算法
把堆內存分為新生代和老年代,新生代又分為 Eden 區、From Survivor 和 To Survivor。一般新生代中的對象基本上都是朝生夕滅的,每次只有少量對象存活,因此采用復制算法,只需要復制那些少量存活的對象就可以完成垃圾收集;老年代中的對象存活率較高,就采用標記-清除和標記-整理算法來進行回收。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。