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