亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

一種內(nèi)存管理方法及系統(tǒng)與流程

文檔序號:12802005閱讀:240來源:國知局
一種內(nèi)存管理方法及系統(tǒng)與流程

本發(fā)明涉及內(nèi)存管理領(lǐng)域,特別涉及一種內(nèi)存管理方法及系統(tǒng)。



背景技術(shù):

在內(nèi)存管理的過程中,需要實時快速的執(zhí)行內(nèi)存的分配和釋放。

但是,當內(nèi)存資源非常有限時。如果沒有進行很好的管理進行合適的分配與釋放操作,那么頻繁的申請內(nèi)存和釋放內(nèi)存的操作會引起系統(tǒng)的內(nèi)存或長時間被占用或無法完全的釋放從而導致內(nèi)存碎片等情況,繼而導致系統(tǒng)反應變慢,甚至會引起系統(tǒng)崩潰。



技術(shù)實現(xiàn)要素:

本發(fā)明所要解決的技術(shù)問題是:提供一種內(nèi)存管理方法及系統(tǒng),避免內(nèi)存碎片化的情況。

為了解決上述技術(shù)問題,本發(fā)明采用的技術(shù)方案為:

本發(fā)明提供一種內(nèi)存管理方法,包括步驟:

接收內(nèi)存分配請求;

若所述請求申請的第一內(nèi)存容量大于預設(shè)的內(nèi)存容量初始值,則不執(zhí)行所述請求;否則:

若已創(chuàng)建的內(nèi)存單元中不存在未分配的內(nèi)存容量大于或等于所述第一內(nèi)存容量的內(nèi)存單元,且已創(chuàng)建的內(nèi)存單元數(shù)量小于預設(shè)內(nèi)存單元數(shù)量,則:

創(chuàng)建內(nèi)存容量為所述內(nèi)存容量初始值的內(nèi)存單元。

本發(fā)明另提供一種內(nèi)存管理系統(tǒng),包括:

第一接收模塊,用于接收內(nèi)存分配請求;

第一判斷模塊,用于判斷是否所述請求申請的第一內(nèi)存容量大于預設(shè)的內(nèi)存容量初始值,則不執(zhí)行所述請求;

第二判斷模塊,用于判斷若已創(chuàng)建的內(nèi)存單元中不存在未分配的內(nèi)存容量大于或等于所述第一內(nèi)存容量的內(nèi)存單元,且已創(chuàng)建的內(nèi)存單元數(shù)量小于預設(shè)內(nèi)存單元數(shù)量;則創(chuàng)建內(nèi)存容量為所述內(nèi)存容量初始值的內(nèi)存單元。

本發(fā)明的有益效果在于:預設(shè)內(nèi)存單元的內(nèi)存容量初始值,僅接收小于所述初始值的內(nèi)存分配請求。對接收的所述請求,若已創(chuàng)建的內(nèi)存單元中有未分配內(nèi)存,足夠分配所述請求申請的內(nèi)存,則優(yōu)先分配已創(chuàng)建的內(nèi)存單元;否則新建內(nèi)存單元來分配內(nèi)存。通過所述方式,可以避免內(nèi)存碎片化的情況,提高內(nèi)存分配的效率。

附圖說明

圖1為本發(fā)明一種內(nèi)存管理方法的具體實施方式的流程框圖;

圖2為本發(fā)明一種內(nèi)存管理系統(tǒng)的具體實施方式的系統(tǒng)框圖;

標號說明:

1、第一接收模塊;2、第一判斷模塊;3、第二判斷模塊;

具體實施方式

為詳細說明本發(fā)明的技術(shù)內(nèi)容、所實現(xiàn)目的及效果,以下結(jié)合實施方式并配合附圖予以說明。

本發(fā)明最關(guān)鍵的構(gòu)思在于:預設(shè)內(nèi)存單元的內(nèi)存容量初始值;接收不大于所述初始值的內(nèi)存分配申請,通過查詢已有的內(nèi)存單元或新建內(nèi)存單元來分配內(nèi)存。通過所述方法,避免了內(nèi)存碎片化的情況,保證了處理器運行的效率。

請參照圖1至圖2所示:

如圖1所示,本發(fā)明提供一種內(nèi)存管理方法:

接收內(nèi)存分配請求;

若所述請求申請的第一內(nèi)存容量大于預設(shè)的內(nèi)存容量初始值,則不執(zhí)行所述請求;否則:

若已創(chuàng)建的內(nèi)存單元中不存在未分配的內(nèi)存容量大于或等于所述第一內(nèi)存容量的內(nèi)存單元,且已創(chuàng)建的內(nèi)存單元數(shù)量小于預設(shè)內(nèi)存單元數(shù)量,則:

創(chuàng)建內(nèi)存容量為所述內(nèi)存容量初始值的內(nèi)存單元。

從上述描述可知,本發(fā)明的有益效果在于:通過規(guī)定內(nèi)存單元固定的內(nèi)存容量,對于每一個接收的內(nèi)存分配申請,都通過所述的內(nèi)存單元來分配內(nèi)存空間。從而避免了頻繁的向系統(tǒng)申請內(nèi)存;同時減少了系統(tǒng)申請內(nèi)存調(diào)用開銷,提高效率并且避免了內(nèi)存碎片化的情形。

進一步的,還包括:

判斷當前訪問的內(nèi)存單元的未分配內(nèi)存容量是否小于所述第一內(nèi)存容量;

若小于,遍歷已創(chuàng)建的內(nèi)存單元,判斷已創(chuàng)建的內(nèi)存單元中是否存在未分配的內(nèi)存容量大于或等于所述第一內(nèi)存容量的內(nèi)存單元;

若不存在,判斷已創(chuàng)建的內(nèi)存單元數(shù)量是否小于預設(shè)內(nèi)存單元數(shù)量;

若小于,則:創(chuàng)建內(nèi)存容量為所述內(nèi)存容量初始值的內(nèi)存單元。

由上述描述可知,通過先判斷當前訪問的內(nèi)存單元是否符合內(nèi)存分配申請所需的內(nèi)存容量的方式,提高了在已創(chuàng)建的內(nèi)存單元中尋找可以分配足夠內(nèi)存容量的內(nèi)存單元的效率。

進一步的,還包括:

預設(shè)內(nèi)存單元對應的標識號;

根據(jù)所述標識號和內(nèi)存單元未分配內(nèi)存容量信息創(chuàng)建內(nèi)存單元列表。

由上述描述可知,通過設(shè)置列表來記錄已創(chuàng)建內(nèi)存單元的標識號和對應的內(nèi)存單元未分配的內(nèi)存容量,之后只需通過訪問列表就可以尋找符合內(nèi)存分配申請所需的內(nèi)存容量的內(nèi)存單元,提高了在已創(chuàng)建的內(nèi)存單元中尋找可以分配足夠內(nèi)存容量的內(nèi)存單元的效率。

進一步的,還包括:

預設(shè)內(nèi)存單元對應的標識號;

獲取所分配內(nèi)存單元的標識號和所分配內(nèi)存的起始地址;

反饋所分配內(nèi)存單元的標識號和所分配內(nèi)存的起始地址給發(fā)送所述內(nèi)存分配請求方。

由上述描述可知,反饋所分配內(nèi)存單元的標識號和所分配內(nèi)存的起始地址給發(fā)送所述內(nèi)存分配請求方,可以使發(fā)送所述內(nèi)存分配請求方更快速高效的訪問內(nèi)存地址存儲信息。

進一步的,還包括:

預設(shè)內(nèi)存單元對應的標識號;

接收內(nèi)存釋放請求,所述內(nèi)存釋放請求包含需釋放內(nèi)存的內(nèi)存單元標識號、需釋放內(nèi)存的內(nèi)存起始地址和需釋放的內(nèi)存容量;

根據(jù)所述內(nèi)存釋放請求釋放對應的內(nèi)存。

由上述描述可知,對于釋放后的內(nèi)存單元是可以反復進行利用,就可以提高內(nèi)存空間的使用效率,避免了一些小內(nèi)存被閑置而造成內(nèi)存的碎片化。

如圖2所示,本發(fā)明提供一種內(nèi)存管理系統(tǒng),包括:

第一接收模塊1,用于接收內(nèi)存分配請求;

第一判斷模塊2,用于判斷是否所述請求申請的第一內(nèi)存容量大于預設(shè)的內(nèi)存容量初始值,則不執(zhí)行所述請求;

第二判斷模塊3,用于判斷若已創(chuàng)建的內(nèi)存單元中不存在未分配的內(nèi)存容量大于或等于所述第一內(nèi)存容量的內(nèi)存單元,且已創(chuàng)建的內(nèi)存單元數(shù)量小于預設(shè)內(nèi)存單元數(shù)量;則創(chuàng)建內(nèi)存容量為所述內(nèi)存容量初始值的內(nèi)存單元。

進一步的,所述的第二判斷模塊2,還包括:

第一判斷單元,用于判斷當前訪問的內(nèi)存單元的未分配內(nèi)存容量是否小于所述第一內(nèi)存容量;

第二判斷單元,若小于則用于遍歷已創(chuàng)建的內(nèi)存單元,判斷已創(chuàng)建的內(nèi)存單元中是否存在未分配的內(nèi)存容量大于或等于所述第一內(nèi)存容量的內(nèi)存單元;

第三判斷單元,若不存在則用于判斷是否已創(chuàng)建的內(nèi)存單元數(shù)量小于預設(shè)內(nèi)存單元數(shù)量;

創(chuàng)建單元,若小于則用于創(chuàng)建內(nèi)存容量為所述內(nèi)存容量初始值的內(nèi)存單元。

進一步的,還包塊:

第一預設(shè)模塊,用于預設(shè)內(nèi)存單元對應的標識號;

列表模塊,用于根據(jù)所述標識號和內(nèi)存單元未分配內(nèi)存容量信息創(chuàng)建內(nèi)存單元列表。

進一步的,還包塊:

第二預設(shè)模塊,用于預設(shè)內(nèi)存單元對應的標識號;

獲取模塊,獲取所分配內(nèi)存單元的標識號和所分配內(nèi)存的起始地址;

反饋模塊,反饋所分配內(nèi)存單元的標識號和所分配內(nèi)存的起始地址給發(fā)送所述內(nèi)存分配請求方。

進一步的,還包塊:

第三預設(shè)模塊,用于預設(shè)內(nèi)存單元對應的標識號;

第二接收模塊,用于接收內(nèi)存釋放請求,所述內(nèi)存釋放請求包含需釋放內(nèi)存的內(nèi)存單元標識號、需釋放內(nèi)存的內(nèi)存起始地址和需釋放的內(nèi)存容量;

釋放模塊,用于根據(jù)所述內(nèi)存釋放請求釋放對應的內(nèi)存。

實施例:

本發(fā)明的實施例提供一種內(nèi)存管理的方法,包括如下步驟:

s1、接收內(nèi)存分配請求;預設(shè)內(nèi)存單元對應的標識號。

例如,接收內(nèi)存分配請求,對于內(nèi)存空間內(nèi)已經(jīng)存在的內(nèi)存單元設(shè)置標識號,可以按照生成內(nèi)存單元的時間順序來設(shè)置。對于內(nèi)存單元分成頭部和數(shù)據(jù)部,頭部則用來記錄本內(nèi)存單元的基本數(shù)據(jù),包括:內(nèi)存單元標識號,內(nèi)存單元狀態(tài),內(nèi)存單元大小,下一內(nèi)存塊地址,下次內(nèi)存分配位置以及內(nèi)存申請的統(tǒng)計信息。

所述的內(nèi)存單元狀態(tài)指內(nèi)存單元能否被使用的情況;所述的內(nèi)存單元大小指內(nèi)存單元數(shù)據(jù)部的內(nèi)存容量;所述下次內(nèi)存分配位置指本內(nèi)存單元的未分配內(nèi)存的起始地址;所述的內(nèi)存申請的統(tǒng)計信息指本內(nèi)存單元被申請使用的次數(shù),若本內(nèi)存被申請使用了兩次,則意味著本內(nèi)存單元內(nèi)記錄著兩個程序的信息,則內(nèi)存申請的統(tǒng)計信息為2,未被申請適用則為0;

s2、根據(jù)所述標識號和內(nèi)存單元未分配內(nèi)存容量信息創(chuàng)建內(nèi)存單元列表;若所述請求申請的第一內(nèi)存容量大于預設(shè)的內(nèi)存容量初始值,則不執(zhí)行所述請求。

例如,對于所有的已創(chuàng)建的內(nèi)存單元,都記錄在專門設(shè)置的列表內(nèi),所述的列表記錄了內(nèi)存單元的標識號以及該內(nèi)存單元對應的未分配的內(nèi)存容量,在內(nèi)存單元被申請或釋放的時候,相應要重新記錄列表內(nèi)對應的未分配的內(nèi)存容量。是對于接收的內(nèi)存分配申請,先判斷,申請分配的內(nèi)存是否不大于預設(shè)的內(nèi)存容量初始值,若大于,則不執(zhí)行所述請求;若不大于則執(zhí)行之后的步驟。

s3、若已創(chuàng)建的內(nèi)存單元中不存在未分配的內(nèi)存容量大于或等于所述第一內(nèi)存容量的內(nèi)存單元,且已創(chuàng)建的內(nèi)存單元數(shù)量小于預設(shè)內(nèi)存單元數(shù)量,則:創(chuàng)建內(nèi)存容量為所述內(nèi)存容量初始值的內(nèi)存單元。s3具體為判斷當前訪問的內(nèi)存單元的未分配內(nèi)存容量是否小于所述第一內(nèi)存容量;若小于,遍歷已創(chuàng)建的內(nèi)存單元,判斷已創(chuàng)建的內(nèi)存單元中是否存在未分配的內(nèi)存容量大于或等于所述第一內(nèi)存容量的內(nèi)存單元;若不存在,判斷已創(chuàng)建的內(nèi)存單元數(shù)量是否小于預設(shè)內(nèi)存單元數(shù)量;若小于,則:創(chuàng)建內(nèi)存容量為所述內(nèi)存容量初始值的內(nèi)存單元。

例如,對于接收的內(nèi)存分配請求,在經(jīng)過前一步判斷,確定所需分配的內(nèi)存不大于預設(shè)的內(nèi)存容量初始值時;再判斷是否為初次申請內(nèi)存,若是,則直接創(chuàng)建內(nèi)存容量為所述內(nèi)存容量初始值的內(nèi)存單元。若不是初次申請,則通過記錄了內(nèi)存單元標識號對應未分配內(nèi)存的列表來判斷是否存在未分配內(nèi)存大于或等于內(nèi)存分配申請所需內(nèi)存的內(nèi)存單元;主要先判斷當前訪問的內(nèi)存單元,若當前訪問的內(nèi)存單元不滿足申請所需的內(nèi)存容量,則遍歷其他內(nèi)存單元。在已創(chuàng)建的內(nèi)存單元中若存在未分配內(nèi)存大于或等于內(nèi)存分配申請所需內(nèi)存的內(nèi)存單元時,分配該內(nèi)存單元給發(fā)送內(nèi)存分配申請方,把分配的內(nèi)存單元設(shè)置為當前訪問的內(nèi)存單元,并重寫該內(nèi)存單元的頭部信息,即改寫下次內(nèi)存分配位置以及內(nèi)存申請的統(tǒng)計信息加1。若不存在已創(chuàng)建的內(nèi)存單元中若存在未分配內(nèi)存大于或等于內(nèi)存分配申請所需內(nèi)存的內(nèi)存單元時,再判斷已創(chuàng)建的內(nèi)存單元數(shù)量是否小于預設(shè)內(nèi)存單元數(shù)量,若不小于則不執(zhí)行所述內(nèi)存分配申請;若小于則創(chuàng)建內(nèi)存容量為所述內(nèi)存容量初始值的內(nèi)存單元,把創(chuàng)建的內(nèi)存單元設(shè)置為當前訪問的內(nèi)存單元,并重寫該內(nèi)存單元的頭部信息,即改寫下次內(nèi)存分配位置以及內(nèi)存申請的統(tǒng)計信息加1,并將創(chuàng)建的內(nèi)存單元的起始地址記錄在上一個內(nèi)存單元的頭部信息中。

s4、獲取所分配內(nèi)存單元的標識號和所分配內(nèi)存的起始地址;反饋所分配內(nèi)存單元的標識號和所分配內(nèi)存的起始地址給發(fā)送所述內(nèi)存分配請求方。

例如,將分配的內(nèi)存單元的標識號,以及在內(nèi)存單元中存儲位置的起始地址反饋給發(fā)送內(nèi)存分配請求方。

s5、接收內(nèi)存釋放請求,所述內(nèi)存釋放請求包含需釋放內(nèi)存的內(nèi)存單元標識號、需釋放內(nèi)存的內(nèi)存起始地址和需釋放的內(nèi)存容量;根據(jù)所述內(nèi)存釋放請求釋放對應的內(nèi)存。

例如,發(fā)送內(nèi)存釋放請求,所述內(nèi)存釋放請求必須包含需釋放內(nèi)存的內(nèi)存單元標識號、需釋放內(nèi)存的內(nèi)存起始地址和需釋放的內(nèi)存容量;接收所述的內(nèi)存釋放請求,并根據(jù)所述的內(nèi)存釋放請求釋放內(nèi)存。同時改寫所釋放內(nèi)存的內(nèi)存單元的頭部信息,即改寫下次內(nèi)存分配位置以及內(nèi)存申請的統(tǒng)計信息減1。若內(nèi)存申請的統(tǒng)計信息為0時,改寫內(nèi)存單元狀態(tài)標識為未被申請使用。

綜上所述,本發(fā)明提供一種內(nèi)存管理方法及系統(tǒng),避免內(nèi)存碎片化的情況。通過接受小于預設(shè)內(nèi)存容量初始值的內(nèi)存分配請求,在已創(chuàng)建的內(nèi)存單元中尋找合適的內(nèi)存單元來分配內(nèi)存給請求方,若沒有合適的就創(chuàng)建新的內(nèi)存容量等于所述預設(shè)內(nèi)存容量的內(nèi)存單元來分配內(nèi)存。在尋找已創(chuàng)建的內(nèi)存單元時先尋找當前訪問的內(nèi)存單元,若不合適再遍歷其他內(nèi)存單元。同時,通過創(chuàng)建列表來記錄已創(chuàng)建的內(nèi)存單元。同時,可以接收內(nèi)存釋放請求,根據(jù)所述的內(nèi)存釋放請求來釋放對應容量和位置的內(nèi)存。

以上所述僅為本發(fā)明的實施例,并非因此限制本發(fā)明的專利范圍,凡是利用本發(fā)明說明書及附圖內(nèi)容所作的等同變換,或直接或間接運用在相關(guān)的技術(shù)領(lǐng)域,均同理包括在本發(fā)明的專利保護范圍內(nèi)。

當前第1頁1 2 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1