新四季網

內存分配方法及裝置、內存的回收方法

2023-05-27 08:47:36

專利名稱:內存分配方法及裝置、內存的回收方法
技術領域:
本發明涉及內存分配的技術領域,尤其是一種內存分配方法及裝置,內存的回收方法。
背景技術:
內存是連接CPU和其他設備的通道,起到緩衝和數據交換的作用。當CPU工作時(例如,CPU運行程序),需要從硬碟等外部存儲器上讀取數據,但由於硬碟這個「倉庫」太大,加上離CPU也很「遠」,運輸「原料」數據的速度就比較慢,導致CPU的生產效率大打折扣。為了解決這個問題,在CPU與外部存儲器之間,建了一個「小倉庫」 一內存。目前內存的分配和回收機制通常是:CPU運行的程序每次需要使用內存時,向系統申請一次內存(可以稱為內存分配請求),系統根據本次程序運行的數據量(也可以看成是程序申請獲取的內存的大小)分配相匹配的內存,程序在該分配的內存中運行數據,並在運行完畢之後將內存交換給系統;下次程序運行時,系統再根據上述方式重新分配並回收內存。具體的內存分配和回收的機制可參考公開號為CN 102012870A的中國專利申請。內存是一個連續的存儲空間,在進行內存分配時,內存的存儲空間是連續分配的,但是內存回收之後難以形成連續的存儲空間。由於不同的程序獲取的內存的大小不同,因此內存回收之後很容易造成內存碎片,影響內存的使用。另外,系統不停的分配和回收內存,還會影響系統的工作效率,並且影響內存的性能。因此如何減少內存碎片,提高系統的工作效率及內存的性能成為目前亟待解決的問題之一。

發明內容
本發明解決的問題是現有技術中的內存碎片較多,系統工作效率低下,內存性能不高的問題。為解決上述問題,本發明的技術方案提供了一種內存分配方法,包括:比較系統分配參數和獲得的內存分配請求中的需求容量;若所述需求容量小於或等於所述系統分配參數,則分配第一類內存,並為所述分配的第一類內存設置使用狀態;所述第一類內存的容量是預設的且與所述內存分配請求中的需求容量相匹配;若所述需求容量大於所述系統分配參數,則分配所述需求容量的第二類內存,並為分配的第二類內存設置使用狀態。可選的,所述分配第一類內存包括:若存在空閒的已分配的第一類內存,則分配該空閒的已分配的第一類內存;否則從系統內存中分配第一類內存。可選的,所述從系統內存中分配第一類內存包括:每次從所述系統內存中分配預定數目的等大的第一類內存,所述預定數目的第一類內存以鍊表的形式存儲。
可選的,所述分配所述需求容量的第二類內存包括:若存在空閒的已分配的第二類內存,則分配該空閒的已分配的第二類內存;否則從系統內存中分配第二類內存。可選的,所述分配該空閒的已分配的第二類內存包括:若所述需求容量與該空閒的已分配的第二類內存的容量的差值大於所述系統分配參數,則按照所述需求容量將該空閒的已分配的第二類內存切割成新的第二類內存並分配。可選的,從所述系統內存中分配的第二類內存以鍊表的形式存儲。可選的,所述第二類內存在鍊表中按照大小排序。可選的,所述第一類內存的容量是預設且與所述內存分配請求中的需求容量相匹配的包括:將所述需求容量基於預定字節向上對齊確定預設且與所述需求容量相匹配的第一類內存的容量。為解決上述問題,本發明的技術方案還提供了一種內存分配裝置,包括:判斷單元,用以比較系統分配參數和獲得的內存分配請求中的需求容量;分配單元,配置成在所述判斷單元判斷所述需求容量小於或等於所述系統分配參數時,分配第一類內存,並為所述分配的第一類內存設置使用狀態;所述第一類內存的容量是預設且與所述需求容量相匹配的;在所述判斷單元判斷所述需求容量大於所述系統分配參數時,分配所述需求容量的第二類內存,並為所述分配的第二類內存設置使用狀態。為解決上述問題,本發明的技術方案還提供了一種內存的回收方法,包括:基於使用完的內存的容量,將所述內存回收至所述第一類內存或第二類內存,並重新設置所述第一類內存或第二類內存的使用狀態。與現有技術相比,本發明具有以下優點:基於內存分配請求中的需求容量和系統分配參數確定本次分配的內存是定長的內存還是變長的內存。若是定長的,則分配第一類內存;若是變長的,則分配第二類內存。將定長和變長結合起來分配內存,不僅滿足了程序的需求,而且提高了整個系統的性能。採用內存池技術,一次性分配多個定長的內存,以鍊表管理,並設置其使用狀態。對於變長的內存,分配的變長的內存以鍊表管理,也設置其使用狀態。這不僅可以減少內存碎片,而且利於管理。在分配內存之前,先檢索已分配的第一類內存或第二類內存中是否存在相匹配的空閒的第一類內存或第二類內存,若存在,則優先分配該相匹配的空閒的第一類內存或第二類內存。這不僅降低對新的內存的消耗,減少對新的內存的分配次數,而且提高已分配的內存的利用率。使用完的內存,根據其容量回收至第一類內存或第二類內存,以此實現內存的反覆使用。這不僅減少內存分配的次數,提高系統的工作效率,而且提高內存的利用率,減少內存碎片。


圖1是本發明實施例提供的內存分配方法的流程圖;圖2是本發明實施例提供的內存的結構示意圖;圖3是本發明實施例提供的第一類內存的結構示意圖4是本發明實施例提供的第二類內存的結構示意圖;圖5是本發明實施例提供的內存分配裝置的結構圖。
具體實施例方式為使本發明的上述目的、特徵和優點能夠更為明顯易懂,下面結合附圖對本發明的具體實施方式
做詳細的說明。在以下描述中闡述了具體細節以便於充分理解本發明。但是本發明能夠以多種不同於在此描述的其它方式來實施,本領域技術人員可以在不違背本發明內涵的情況下做類似推廣。因此本發明不受下面公開的具體實施方式
的限制。圖1是本發明實施例提供的內存分配方法的流程圖,下面結合圖1詳細說明。步驟SI,比較系統分配參數和獲得的內存分配請求中的需求容量;步驟S2,若所述需求容量小於或等於所述系統分配參數,則分配第一類內存,並為所述分配的第一類內存設置使用狀態;所述第一類內存的容量是預設的且與所述內存分配請求中的需求容量相匹配;步驟S3,若所述需求容量大於所述系統分配參數,則分配所述需求容量的第二類內存,並為分配的第二類內存設置使用狀態。所述步驟SI中,程序在運行過程中,需要獲取內存以存放運行的數據,因此程序運行時,向系統發出內存分配請求,所述內存分配請求中攜帶有程序運行所述的內存的容量(需求容量)。系統獲取內存分配請求後,基於其中包含的需求容量(也可以是系統根據程序的運行需要計算程序所述的內存的容量)與系統分配參數做比較,並基於比較的結果進行後續的內存分配。所述系統分配參數為預定值,通常取值256位元組。在具體實施時,可以根據實際需要進行設置。所述步驟S2中,若所述需求容量小於或等於所述系統分配參數,則分配第一類內存,具體的可以是:所述分配第一類內存包括:若存在空閒的已分配的第一類內存,則分配該空閒的已分配的第一類內存;否則從系統內存中分配第一類內存。通常情況下,系統內存是供整個系統分配的內存;第一類內存可以稱為定長內存池,從系統內存中分配之後,一般不再歸還給系統內存。所述從系統內存中分配第一類內存包括:每次從所述系統內存中分配預定數目的等大的第一類內存,所述預定數目的第一類內存以鍊表的形式存儲。例如,根據本次程序所需的內存的需求容量(8位元組),一次從系統內存中分配預定數目(100個)所述需求容量(8位元組)的第一類內存。所述第一類內存的容量是預設的,且與所述內存分配請求中的需求容量相匹配,所述第一類內存的容量的確定方式可以是將所述內存分配請求中的需求容量基於預定字節向上對齊確定,且所述第一類內存的容量與所述內存分配請求中的需求容量相匹配。所述預定字節可以是4位元組。例如,所述內存分配請求中的需求容量是3位元組,基於預定字節(4位元組)向上對齊確定的與所述內存分配請求中的需求容量相匹配的第一類內存的容量為4位元組。為所述分配的第一類內存設置使用狀態可以是為已使用的第一類內存設置已使用標示,也可以是為未使用的第一類內存設置未使用標示。以鍊表存儲第一類內存時,可以使用指針標示已使用的或未使用的第一類內存。所述步驟S2中,若所述需求容量大於所述系統分配參數,則分配所述內存分配請求中的需求容量的第二類內存,具體實施時可以是:所述分配所述內存分配請求中的需求容量的第二類內存包括:若存在空閒的已分配的第二類內存,則分配該空閒的已分配的第二類內存;否則從系統內存中分配第二類內存。所述分配該空閒的已分配的第二類內存包括,所述內存分配請求中的需求容量與該空閒的已分配的第二類內存的容量的差值大於所述系統分配參數,則按照所述內存分配請求中的需求容量將該空閒的已分配的第二類內存切割成新的第二類內存並分配。從所述系統內存中分配的第二類內存以鍊表的形式存儲。所述第二類內存在鍊表中按照大小排序。為所述分配的第二類內存設置使用狀態可以是為已使用的第二類內存設置已使用標示,也可以是為未使用的第二類內存設置未使用標示。以鍊表存儲第二類內存時,可以使用指針標示已使用的或未使用的第二類內存。本發明的技術方案還提供了一種內存的回收方法,包括:基於使用完的內存的容量,將所述內存回收至所述第一類內存或第二類內存,並重新設置所述第一類內存或第二類內存的使用狀態。由於所述第一類內存或第二類內存按照使用狀態以鍊表的形式存儲,因此使用完的空閒的內存回收至第一類內存或第二類內存時,可以存儲在第一類內存或第二類內存對應的鍊表的尾部存儲。圖2至圖4是本發明實施例的示意圖,下面結合圖2至圖4舉例說明。圖2是本發明實施例提供的內存的結構示意圖。系統內存10在系統中一塊連續的存儲空間,每次程序運行時,需要向系統申請內存以緩存或運行數據,系統根據本次程序緩存或運行的數據量,向程序分配內存,並在程序使用完之後回收。參考圖2,在系統未運行之前,系統內存10是一塊完整而連續的存儲空間,系統運行之後,程序根據運行的需要向系統申請內存,系統將系統內存10分配給程序使用。第一類內存201和第二類內存301都是從系統內存10中分配出來的,但是第一類內存201和第二類內存301使用完成之後,並不交還給系統內存10,而是獨立在系統內存10之外,第一類內存201回收至定長內存池20中,第二類內存回收至變長內存池30中,供後續的程序使用。這種技術通常稱為內存池技術。內存池中內存都是從系統內存中分配出來的,但是內存池中的內存使用完之後,並不交還給系統內存,而是回收至內存池,下次分配內存時,優先查看內存池中是否有空閒可用的內存,若存在,則優先使用內存池中的內存,若不存在,再從系統內存中重新分配新的內存。程序向系統申請的內存通常分為兩種:一種是定長,也就是每次向系統申請相同大小的內存;一種是變長,也就是程序每次向系統申請的內存的大小不一。
在本實施例中,程序處理的是地圖數據,地圖數據中包含坐標數據(也稱為點數據),道路數據(也稱為線數據),區域數據(也稱為面數據)。發明人在長期的觀察和實驗中發現,程序在處理坐標數據時,每次向系統申請定長的內存,程序在處理道路數據和區域數據時,每次向系統申請變長的內存。鑑於上述情況,發明人提出了本發明的技術方案。本實施例中,比較系統分配參數和程序發出的內存分配請求中的需求容量,向程序分配內存。所述系統分配參數優選的取值範圍為256 512位元組。系統比較程序本次申請的內存的需求容量(也稱為內存的大小)與系統分配參數,根據比較結果分配內存。圖3是本發明實施例提供的第一類內存的結構示意圖,參考圖3,若本次申請的內存的需求容量小於系統分配參數,則判斷程序本次申請的是定長的內存。此時可以先檢索定長內存池20中是否存在空閒可用的第一類內存,若存在空閒可用的第一類內存,則從定長內存池20中分配空閒可用的第一類內存,若定長內存池20中不存在空閒可用的第一類內存,則從系統內存10中分配第一類內存。系統可以一次性從系統內存10中分配預定數目的等大的第一類內存201,這預定數目的等大的第一類內存以鍊表(201a、201b、201c)的形式存儲,並設置表示所述第一類內存使用狀態的第一標識(202a、202b、202c),所述第一類內存在鍊表中以使用狀態排序,所述第一標識可以設置在最後一個已使用的第一類內存(也可以設置在第一個未使用的第一類內存)。存儲所述第一類內存的鍊表可以有多個,每一個鍊表可以設置一個第一標識(具體實施時可以採用指針)。所述第一類內存的容量根據程序本次申請的內存的容量基於預定字節向上對齊確定。所述預定數目的優選取值範圍為20 40個。所述預定字節優選取值為4位元組。每次分配的第一類內存的預定數目和容量可以相同,也可以不同。例如,本次分配的第一類內存的預定數目可以是20個,本次分配的每個第一類內存的容量可以是4位元組,下一次分配的第一類內存的預定數目可以是40個,每個第一類內存的容量可以是8位元組。圖4是本發明實施例提供的第二類內存的結構示意圖,參考圖4,若本次申請的內存的需求容量大於或等於系統分配參數,則判斷程序本次申請的是變長的內存。此時可以先檢索變長內存池30中是否存在空閒可用的第二類內存,若存在空閒可用的第二類內存,則從變長內存池30中分配空閒可用的第二類內存,若變長內存池30中不存在空閒可用的第二類內存,則從系統內存10中分配第一類內存。從變長內存池30中分配空閒可用的第二類內存時,若內存分配請求中的需求容量與該空閒可用的第二類內存的容量的差值大於所述系統分配參數,則按照所述內存分配請求中的需求容量將該空閒可用的第二類內存切割成新的第二類內存並分配,且對切割後的新的第二類內存設置使用狀態。從系統內存中分配第二類內存時,僅分配符合程序本次運行所需的第二類內存。程序每次申請的第二類內存的容量通常是不等的,但也可以是相等的。變長內存池30中的第二類內存也以鍊表301a的形式存儲,並設置表示所述第二類內存使用狀態的第二標識302a。所述第二類內存按照使用狀態在所述鍊表301a中存儲,並按照大小排序。第二標識302a可以設置在最後一個已使用的第二類內存(也可以設置在第一個未使用的第二類內存)。存儲所述第二類內存的鍊表可以有多個,每一個鍊表可以設置一個第二標識(具體實施時可以採用指針)。
具體舉例來講,若系統分配參數設置為256位元組,程序本次申請3位元組的內存,將3位元組按照預定字節(4位元組)向上對齊得到4位元組(本次分配的第一類內存的容量)。比較得出4位元組(內存分配請求中的需求容量)小於256位元組(系統分配參數),則可以一次性分配4位元組(第一類內存)乘以20個(預定數目)共80位元組的系統內存的內存空間,並將這80位元組的內存空間切割為20個4位元組大小的第一類內存。這20個第一類內存以鍊表201a的形式存儲,並設置指針(第一標識202a)標示已用的內存空間或未用的第一類內存。指針通常標示在最後一個已用的第一類內存或第一個未用的第一類內存。程序下一次申請的內存為8位元組,比較得出8位元組小於256位元組,則可以一次性分配8位元組乘以25個共200位元組的系統內存的第一類內存,並將這200位元組的內存空間切割為25個8位元組大小的小內存空間。這25個第一類內存以新的鍊表201b的形式存儲,並設置指針(第一標識202b)標示已用的第一類內存或未用的第一類內存。指針通常標示在最後一個已用的第一類內存或第一個未用的第一類內存。程序下一次申請的內存為300位元組,比較得出300位元組(內存分配請求中的需求容量)大於256位元組(系統分配參數),則系統分配一個300位元組的系統內存的內存空間(第二類內存)。後續程序再次申請的內存空間為256位元組,比較得出256位元組等於256位元組,則分配一個256位元組的系統內存的內存空間(第二類內存)。先前分配的300位元組的內存空間和本次分配的256位元組的內存空間以鍊表301a的形式存儲,並且以內存空間從小到大的順序排列存儲(256位元組的存儲空間在前,300位元組的內存空間在後),並設置指針(第二標識302a)標示第二類內存的使用狀態。程序後續申請內存時,系統基於內存分配請求中的需求容量在已有的第一類內存或第二類內存中檢索並分配與所述需求容量相匹配的空閒的第一類內存或第二類內存,且重新設置所述第一標識或第二標識。例如,程序申請4位元組的內存,系統比較4位元組(內存分配請求中的需求容量)小於256位元組(系統分配參數),先在鍊表201a (4位元組的鍊表)中檢索是否存在空閒的第一類內存,若存在則將該空閒的第一類內存(4位元組)分配給程序使用,並更新第一標識202a的位置,若不存在,在鍊表201b (8位元組的鍊表)中檢索是否存在空閒的第一類內存,若存在則將該空閒的第一類內存(8位元組)分配給程序使用,若不存在則按照前述舉例,重新分配系統內存的內存空間。程序申請257位元組的內存,比較得出257位元組(內存分配請求中的需求容量)大於256位元組(系統分配參數),則在鍊表301a中檢索是否存在空閒的第二類內存(等於時是分配第一類內存?),若存在,則分配該空閒的第二類內存,並更新第二標識302a,若不存在,則按照前述舉例,重新分配系統內存的內存空間。程序申請600位元組的內存,系統比較600位元組(內存分配請求中的需求容量)大於256位元組(系統分配參數),鍊表301a中並不存在與之相匹配的內存空間,則按照前述舉例,重新分配系統內存的內存空間。若程序申請的需求內存的容量大於所述系統分配參數,且所述需求容量與已有的空閒的第二類內存的容量的差值大於所述系統分配參數,則按照所述需求容量將所述已有的空閒的第二類內存切割成新的第二類內存並分配且設置所述第二標識。舉例來講,程序再次申請257位元組的內存,比較得出257位元組大於256位元組,則在鍊表301a中檢索是否存在空閒的第二類內存,此時先前申請的257位元組的內存正在使用,後面申請的600位元組的內存空閒,由於600位元組-257位元組=343位元組> 256位元組,則系統將該600位元組的內存空間切割為兩個新的第二類內存,分別為257位元組和343位元組,並將新的257位元組分配給程序使用,將新的第二類內存(257位元組和343位元組)存入鍊表301a,且更新第二標識302a。在地圖數據中,常用的第一類內存的容量包括:4位元組、8位元組、12位元組、16位元組等。其中使用頻率最高的是12位元組,因此從系統內存中分配第一類內存時,通常分配較多預定數目的12位元組的存儲空間。在回收使用完的內存時,基於該使用完的內存的容量,將所述內存回收至所述第一類內存或第二類內存(定長內存池20或變長內存池30),並重新設置所述第一類內存或第二類內存的使用狀態。使用完的空閒的內存回收至第一類內存或第二類內存時,可以存儲在第一類內存或第二類內存對應的鍊表的尾部存儲或者按照存儲空間的大小插入鍊表中合適的位置。本發明的技術方案還提供了一種內存分配裝置,所述內存分配裝置包括:判斷單元1,用以比較系統分配參數和獲得的內存分配請求中的需求容量;分配單元2,配置成在所述判斷單元I判斷所述需求容量小於或等於所述系統分配參數時,分配第一類內存,並為所述分配的第一類內存設置使用狀態;所述第一類內存的容量是預設且與所述需求容量相匹配的;在所述判斷單元判斷所述需求容量大於所述系統分配參數時,分配所述需求容量的第二類內存,並為所述分配的第二類內存設置使用狀態。所述分配單元2與判斷單元I相連,所述分配單元2基於判斷單元I判斷的結果分配內存。具體的,所述分配單元2包括:第一類分配單元21,配置成在存在空閒的已分配的第一類內存時,分配該空閒的已分配的第一類內存;否則從系統內存中分配第一類內存。從系統內存中分配第一類內存時,所述第一類分配單元21每次從所述系統內存中分配預定數目的等大的第一類內存;所述內存分配裝置還包括:管理單元3,用以將所述預定數目的第一類內存以鍊表的形式存儲。從系統內存中分配第一類內存時,所述第一類分配單元21將所述需求容量基於預定字節向上對齊確定預設且與所述需求容量相匹配的第一類內存的容量。所述分配單元2包括第二類分配單元22,配置成在存在空閒的已分配的第二類內存時,分配該空閒的已分配的第二類內存;否則從系統內存中分配第二類內存。所述第二類分配單元22包括:比較單元(圖中未顯示),用以比較所述需求容量與該空閒的已分配的第二類內存的容量;切割單元(圖中未顯示),配置成在所述比較單元比較所述需求容量與該空閒的已分配的第二類內存的容量的差值大於所述系統分配參數時,按照所述需求容量將該空閒的已分配的第二類內存切割成新的第二類內存並分配。管理單元3還用以將從所述系統內存中分配的第二類內存以鍊表的形式存儲。管理單元3將所述第二類內存在鍊表中按照大小排序。本發明的技術方案至少具有以下優勢:
基於內存分配請求中的需求容量和系統分配參數確定本次分配的內存是定長的內存還是變長的內存。若是定長的,則分配第一類內存;若是變長的,則分配第二類內存。將定長和變長結合起來分配內存,不僅滿足了程序的需求,而且提高了整個系統的性能。採用內存池技術,一次性分配多個定長的內存,以鍊表管理,並設置其使用狀態。對於變長的內存,分配的變長的內存以鍊表管理,也設置其使用狀態。這不僅可以減少內存碎片,而且利於管理。在分配內存之前,先檢索已分配的第一類內存或第二類內存中是否存在相匹配的空閒的第一類內存或第二類內存,若存在,則優先分配該相匹配的空閒的第一類內存或第二類內存。這不僅降低對新的內存的消耗,減少對新的內存的分配次數,而且提高已分配的內存的利用率。使用完的內存,根據其容量回收至第一類內存或第二類內存,以此實現內存的反覆使用。這不僅減少內存分配的次數,提高系統的工作效率,而且提高內存的利用率,減少內存碎片。本發明雖然已以較佳實施例公開如上,但其並不是用來限定本發明,任何本領域技術人員在不脫離本發明的精神和範圍內,都可以利用上述揭示的方法和技術內容對本發明技術方案做出可能的變動和修改,因此,凡是未脫離本發明技術方案的內容,依據本發明的技術實質對以上實施例所作的任何簡單修改、等同變化及修飾,均屬於本發明技術方案的保護範圍。
權利要求
1.一種內存分配方法,其特徵在於,包括: 比較系統分配參數和獲得的內存分配請求中的需求容量; 若所述需求容量小於或等於所述系統分配參數,則分配第一類內存,並為所述分配的第一類內存設置使用狀態;所述第一類內存的容量是預設的且與所述內存分配請求中的需求容量相匹配; 若所述需求容量大於所述系統分配參數,則分配所述需求容量的第二類內存,並為分配的第二類內存設置使用狀態。
2.如權利要求1所述的內存分配方法,其特徵在於,所述分配第一類內存包括: 若存在空閒的已分配的第一類內存,則分配該空閒的已分配的第一類內存;否則從系統內存中分配第一類內存。
3.如權利要求2所述的內存分配方法,其特徵在於,所述從系統內存中分配第一類內存包括:每次從所述系統內存中分配預定數目的等大的第一類內存,所述預定數目的第一類內存以鍊表的形式存儲。
4.如權利要求1所述的內存分配方法,其特徵在於,所述分配所述需求容量的第二類內存包括: 若存在空閒的已分配的第二類內存,則分配該空閒的已分配的第二類內存;否則從系統內存中分配第二類內存。
5.如權利要求4所述的內存分配方法,其特徵在於,所述分配該空閒的已分配的第二類內存包括:若所述需求容 量與該空閒的已分配的第二類內存的容量的差值大於所述系統分配參數,則按照所述需求容量將該空閒的已分配的第二類內存切割成新的第二類內存並分配。
6.如權利要求4所述的內存分配方法,其特徵在於,從所述系統內存中分配的第二類內存以鍊表的形式存儲。
7.如權利要求6所述的內存分配方法,其特徵在於,所述第二類內存在鍊表中按照大小排序。
8.如權利要求1所述的內存分配方法,其特徵在於,所述第一類內存的容量是預設且與所述內存分配請求中的需求容量相匹配的包括:將所述需求容量基於預定字節向上對齊確定預設且與所述需求容量相匹配的第一類內存的容量。
9.一種內存分配裝置,其特徵在於,包括: 判斷單元,用以比較系統分配參數和獲得的內存分配請求中的需求容量; 分配單元,配置成在所述判斷單元判斷所述需求容量小於或等於所述系統分配參數時,分配第一類內存,並為所述分配的第一類內存設置使用狀態;所述第一類內存的容量是預設且與所述需求容量相匹配的;在所述判斷單元判斷所述需求容量大於所述系統分配參數時,分配所述需求容量的第二類內存,並為所述分配的第二類內存設置使用狀態。
10.如權利要求9所述的內存分配裝置,其特徵在於,所述分配單元包括:第一類分配單元,配置成在存在空閒的已分配的第一類內存時,分配該空閒的已分配的第一類內存;否則從系統內存中分配第一類內存。
11.如權利要求10所述的內存分配裝置,其特徵在於,從系統內存中分配第一類內存時,所述第一類分配單元每次從所述系統內存中分配預定數目的等大的第一類內存;所述內存分配裝置還包括:管理單元,用以將所述預定數目的第一類內存以鍊表的形式存儲。
12.如權利要求10所述的內存分配裝置,其特徵在於,從系統內存中分配第一類內存時,所述第一類分配單元將所述需求容量基於預定字節向上對齊確定預設且與所述需求容量相匹配的第一類內存的容量。
13.如權利要求9所述的內存分配裝置,其特徵在於,所述分配單元包括第二類分配單元,配置成在存在空閒的已分配的第二類內存時,分配該空閒的已分配的第二類內存;否則從系統內存中分配第二類內存。
14.如權利要求13所述的內存分配裝置,其特徵在於,所述第二類分配單元包括: 比較單元,用以比較所述需求容量與該空閒的已分配的第二類內存的容量; 切割單元,配置成在所述比較單元比較所述需求容量與該空閒的已分配的第二類內存的容量的差值大於所述系統分配參數時,按照所述需求容量將該空閒的已分配的第二類內存切割成新的第二類內存並分配。
15.如權利要求13所述的內存分配裝置,其特徵在於,還包括,管理單元用以將從所述系統內存中分配的第二類內存以鍊表的形式存儲。
16.如權利要求15所述的內存分配裝置,其特徵在於,所述管理單元將所述第二類內存在鍊表中按照大小排序。
17.—種基於權利要求1至8任一項所述的內存分配方法分配的內存的回收方法,其特徵在於,包括: 基於使用完的內存的容量,將所述內存回收至所述第一類內存或第二類內存,並重新設置所述第一類內存或第二類內 存的使用狀態。
全文摘要
一種內存分配方法及裝置,內存的回收方法,所述內存分配方法包括比較系統分配參數和獲得的內存分配請求中的需求容量;若所述需求容量小於或等於所述系統分配參數,則分配第一類內存,並為所述分配的第一類內存設置使用狀態;所述第一類內存的容量是預設的且與所述內存分配請求中的需求容量相匹配;若所述需求容量大於所述系統分配參數,則分配所述需求容量的第二類內存,並為分配的第二類內存設置使用狀態。本發明的技術方案減少了內存碎片,提高了系統的工作效率及內存的性能。
文檔編號G06F12/02GK103186469SQ20111044678
公開日2013年7月3日 申請日期2011年12月27日 優先權日2011年12月27日
發明者王軍 申請人:上海博泰悅臻電子設備製造有限公司

同类文章

一種新型多功能組合攝影箱的製作方法

一種新型多功能組合攝影箱的製作方法【專利摘要】本實用新型公開了一種新型多功能組合攝影箱,包括敞開式箱體和前攝影蓋,在箱體頂部設有移動式光源盒,在箱體底部設有LED脫影板,LED脫影板放置在底板上;移動式光源盒包括上蓋,上蓋內設有光源,上蓋部設有磨沙透光片,磨沙透光片將光源封閉在上蓋內;所述LED脫影

壓縮模式圖樣重疊檢測方法與裝置與流程

本發明涉及通信領域,特別涉及一種壓縮模式圖樣重疊檢測方法與裝置。背景技術:在寬帶碼分多址(WCDMA,WidebandCodeDivisionMultipleAccess)系統頻分復用(FDD,FrequencyDivisionDuplex)模式下,為了進行異頻硬切換、FDD到時分復用(TDD,Ti

個性化檯曆的製作方法

專利名稱::個性化檯曆的製作方法技術領域::本實用新型涉及一種檯曆,尤其涉及一種既顯示月曆、又能插入照片的個性化檯曆,屬於生活文化藝術用品領域。背景技術::公知的立式檯曆每頁皆由月曆和畫面兩部分構成,這兩部分都是事先印刷好,固定而不能更換的。畫面或為風景,或為模特、明星。功能單一局限性較大。特別是畫

一種實現縮放的視頻解碼方法

專利名稱:一種實現縮放的視頻解碼方法技術領域:本發明涉及視頻信號處理領域,特別是一種實現縮放的視頻解碼方法。背景技術: Mpeg標準是由運動圖像專家組(Moving Picture Expert Group,MPEG)開發的用於視頻和音頻壓縮的一系列演進的標準。按照Mpeg標準,視頻圖像壓縮編碼後包

基於加熱模壓的纖維增強PBT複合材料成型工藝的製作方法

本發明涉及一種基於加熱模壓的纖維增強pbt複合材料成型工藝。背景技術:熱塑性複合材料與傳統熱固性複合材料相比其具有較好的韌性和抗衝擊性能,此外其還具有可回收利用等優點。熱塑性塑料在液態時流動能力差,使得其與纖維結合浸潤困難。環狀對苯二甲酸丁二醇酯(cbt)是一種環狀預聚物,該材料力學性能差不適合做纖

一種pe滾塑儲槽的製作方法

專利名稱:一種pe滾塑儲槽的製作方法技術領域:一種PE滾塑儲槽一、 技術領域 本實用新型涉及一種PE滾塑儲槽,主要用於化工、染料、醫藥、農藥、冶金、稀土、機械、電子、電力、環保、紡織、釀造、釀造、食品、給水、排水等行業儲存液體使用。二、 背景技術 目前,化工液體耐腐蝕貯運設備,普遍使用傳統的玻璃鋼容

釘的製作方法

專利名稱:釘的製作方法技術領域:本實用新型涉及一種釘,尤其涉及一種可提供方便拔除的鐵(鋼)釘。背景技術:考慮到廢木材回收後再加工利用作業的方便性與安全性,根據環保規定,廢木材的回收是必須將釘於廢木材上的鐵(鋼)釘拔除。如圖1、圖2所示,目前用以釘入木材的鐵(鋼)釘10主要是在一釘體11的一端形成一尖

直流氧噴裝置的製作方法

專利名稱:直流氧噴裝置的製作方法技術領域:本實用新型涉及ー種醫療器械,具體地說是ー種直流氧噴裝置。背景技術:臨床上的放療過程極易造成患者的局部皮膚損傷和炎症,被稱為「放射性皮炎」。目前對於放射性皮炎的主要治療措施是塗抹藥膏,而放射性皮炎患者多伴有局部疼痛,對於止痛,多是通過ロ服或靜脈注射進行止痛治療

新型熱網閥門操作手輪的製作方法

專利名稱:新型熱網閥門操作手輪的製作方法技術領域:新型熱網閥門操作手輪技術領域:本實用新型涉及一種新型熱網閥門操作手輪,屬於機械領域。背景技術::閥門作為流體控制裝置應用廣泛,手輪傳動的閥門使用比例佔90%以上。國家標準中提及手輪所起作用為傳動功能,不作為閥門的運輸、起吊裝置,不承受軸向力。現有閥門

用來自動讀取管狀容器所載識別碼的裝置的製作方法

專利名稱:用來自動讀取管狀容器所載識別碼的裝置的製作方法背景技術:1-本發明所屬領域本發明涉及一種用來自動讀取管狀容器所載識別碼的裝置,其中的管狀容器被放在循環於配送鏈上的文檔匣或託架裝置中。本發明特別適用於,然而並非僅僅專用於,對引入自動分析系統的血液樣本試管之類的自動識別。本發明還涉及專為實現讀