官术网_书友最值得收藏!

1.3.3 標(biāo)記清除

從根集合出發(fā),遍歷對象,把活躍對象入棧,并依次處理。處理方式可以是廣度優(yōu)先搜索也可以是深度優(yōu)先搜索(通常使用深度優(yōu)先搜索,節(jié)約內(nèi)存)。標(biāo)記出活躍對象之后,就可以把不活躍對象清除。下面演示一個簡單的例子,從根集合出發(fā)查找堆空間的活躍對象,如圖1-3所示。

圖1-3 標(biāo)記清除算法

這里僅僅演示了如何找到對象,沒有進(jìn)一步介紹找到對象后如何處理。對于標(biāo)記清除算法其實還需要額外的數(shù)據(jù)結(jié)構(gòu)(比如一個鏈表)來記錄可用空間,在對象分配的時候從這個鏈表中尋找能夠容納對象的空間。當(dāng)然這里還有很多細(xì)節(jié)都未涉及,比如在分配時如何找到最合適的內(nèi)存空間,有First Fit、Best Fit和Worst Fit等方法,這里不再贅述。標(biāo)記清除算法最大的缺點就是使內(nèi)存碎片化。

主站蜘蛛池模板: 开平市| 资中县| 全州县| 广平县| 喀喇沁旗| 沙河市| 九龙县| 彰化县| 阿拉尔市| 盘山县| 山东省| 湖口县| 柳河县| 江达县| 津南区| 侯马市| 乐东| 石阡县| 慈溪市| 定结县| 渑池县| 桐城市| 蓬莱市| 辛集市| 化州市| 平山县| 行唐县| 南昌县| 闽侯县| 安多县| 子长县| 晋州市| 长乐市| 冷水江市| 四川省| 陇川县| 什邡市| 冷水江市| 临沭县| 正阳县| 平和县|