JVM垃圾收集

垃圾收集算法

標記-清除算法

該算法主要有兩個階段:標記,清除。首先標記出全部須要回收的對象,標記完成後,回收(清除)全部被標記的對象;或標記全部不須要要回收的對象,而後回收全部未被標記的對象。
缺點:算法

  1. 執行效率不穩定,若是Java堆中包含大量須要清除的對象,這是必需要進行大量的標記和清除動做,致使兩個過程的執行效率隨着對象的數量蒸架而下降。
  2. 內存碎片化

標記-複製算法

將可用內存按照容量劃分爲兩個大小一致的內存空間,每次僅使用其中一塊,當一塊內存用完後,將存活的對象移動到另外一塊內存中,而後清理該內存。
缺點:spa

  1. 若是有大量對象存活,在複製時會產生大量的開銷
  2. 可用內存縮小一半,空間浪費嚴重。

標記-整理算法

首先標記存活的對象,而後按照必定方式用存活的對象覆蓋「死亡」對象所佔用的內存空間以達到整理的目的。對象

各個垃圾收集器的關係

image.png

相關文章
相關標籤/搜索