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