關(guān)于順序表產(chǎn)生碎片原因的分析

? ? ? ? 什么是順序表?順序表是物理結(jié)構(gòu)連續(xù)的線性表,它并不要求該線性表在邏輯上也連續(xù)。其中物理結(jié)構(gòu)連續(xù),代表著,一個順序表中的元素按照先后次序緊密地排列在存儲空間中,即可認(rèn)為該順序表占用了一大段的連續(xù)存儲空間。

? ? ? ? 因?yàn)轫樞虮硇枰加靡徽麎K連續(xù)的存儲空間。如果多個不同大小的順序表按左右順序排列,釋放掉中間的任意一個順序表,并且它的左右相鄰順序表始終駐留。那么,所釋放的那個順序表所占的存儲空間就會如一道縫隙留在原地。此時該縫隙最大只能存儲縫隙大小的內(nèi)容。若以小于這道縫隙大小的內(nèi)容填充在這里,自然會形成一道更小的縫隙。而這種更小的縫隙是可以在程序運(yùn)行時逐漸積累數(shù)量的,如果一個程序長時間運(yùn)行,并且以一定頻率產(chǎn)生這種縫隙,久而久之,這類縫隙越來越多,且所有縫隙無法被使用。這就是所謂的碎片。

20190531更新:

在閱讀數(shù)據(jù)結(jié)構(gòu)一書時,在<動態(tài)存儲管理>章節(jié)中<可利用空間表及分配方法>小節(jié)中有三種分配策略,分別是首次擬合法、最佳擬合法和最差擬合法。其中最佳擬合法定義為:將可利用空間表中一個不小于n且最接近n的空閑塊的一部分分配給用戶。因?yàn)楦鶕?jù)改分配原則進(jìn)行分配時,總是找大小最接近請求的內(nèi)存塊,因此系統(tǒng)中可能產(chǎn)生一些存儲量甚小而無法利用的小片內(nèi)存。而與順序表相似的是首次擬合法。首次擬合法的分配是隨機(jī)的,介于最佳擬合法和最差擬合法之間。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 關(guān)于Mongodb的全面總結(jié) MongoDB的內(nèi)部構(gòu)造《MongoDB The Definitive Guide》...
    中v中閱讀 32,309評論 2 89
  • 一場令人膽怯的 真實(shí)夢境 突然降臨 我無法抽身 就像 秋阻止不了葉落 夏停止不了草長 而我們防備不了 春的百花齊放
    禾田八文閱讀 450評論 2 5

友情鏈接更多精彩內(nèi)容