北大青鳥西安華美校區(qū)告訴你分配內(nèi)存時如何減少內(nèi)存碎片_第1頁
已閱讀1頁,還剩2頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、分配內(nèi)存時如何減少內(nèi)存碎片分配內(nèi)存時如何減少內(nèi)存碎片感覺面試的時候經(jīng)常會被問到這個問題,然后我也學(xué)習(xí)了一下Memcached的slab機制,發(fā)現(xiàn)很多服務(wù)器都是使用這種機制來分配內(nèi)存,所以決定學(xué)習(xí)一下。首先,先對內(nèi)存分配中的伙伴系統(tǒng)有初步的了解:在編程和使用的服務(wù)器軟件中,經(jīng)常需要分配一組連續(xù)的頁框,而頻繁地申請和釋放不同大小的連續(xù)頁框,必然導(dǎo)致在已分配頁框的內(nèi)存塊中分散了許多小塊的空閑頁框。這樣,即使這些頁框是空閑的,但要分配一個大塊的

2、連續(xù)頁框就可能無法滿足。而Linux采用了伙伴系統(tǒng)來解決上述難題。把所有的空閑頁框分組為11個塊鏈表,每個塊鏈表分別包含大小為1,2,4,8,16,32,64,128,256,512和1024個連續(xù)頁框的頁框塊。最大可以申請1024個連續(xù)頁框,對應(yīng)4MB大小的連續(xù)內(nèi)存。每個頁框塊的第一個頁框的物理地址是該塊大小的整數(shù)倍。例如,大小為16個頁框的塊,其起始地址是16212的倍數(shù)。假設(shè)要申請一個256個頁框的塊,先從256個頁框的鏈表中查找

3、空閑塊,如果沒有,就去512個頁框的鏈表中找,找到了則將頁框塊分為2個256個頁框的塊,一個分配給應(yīng)用,另外一個移到256個頁框的鏈表中。如果512個頁框的鏈表中仍沒有空閑塊,繼續(xù)向1024個頁框的鏈表查找,如果仍然沒有,則返回錯誤。頁框塊在釋放時,內(nèi)核會主動將兩個互為伙伴的頁框塊合并為一個較大的頁框塊,成功后會試圖尋找伙伴并合并為更大的內(nèi)存塊,直至塊的大小超過上限或者沒有伙伴為止?;榛锇榈膬蓚€內(nèi)存塊必須符合以下條件:1、兩個塊具有相

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論