更新時間:2021年03月02日15時08分 來源:傳智教育 瀏覽次數(shù):
標記-清除算法(Mark-Sweep)是一種非常基礎和常見的垃圾收集算法,簡單的說,它們找出所有不可達的對象,并將它們放入空閑列表Free,該算法被J.McCarthy等人在1960年提出并并應用于Lisp語言。
標記-清除算法分為兩個階段,標注和清除。標記階段標記出所有需要回收的對象,清除階段回收被標記的對象所占用的空間。如圖
從圖中我們就可以發(fā)現(xiàn),該算法最大的問題是內存碎片化嚴重,后續(xù)可能發(fā)生大對象不能找到可利用空間的問題。
缺點
·效率不算高
·在進行GC的時候,需要停止整個應用程序,導致用戶體驗差
·這種方式清理出來的空閑內存是不連續(xù)的,產生內存碎片。需要維護一個空閑列表。
猜你喜歡:
下面是傳智教育公開的幾套Java課程,您可以下載和在線觀看學習,如果想深入學習java并想找到不錯的java開發(fā)相關工作,建議報班學習傳智教育Java高級軟件工程師課程。獲取【Java視頻教程+資料】加播妞:435946716。