[發明專利]一種內存管理方法及裝置有效
| 申請號: | 201010213298.6 | 申請日: | 2010-06-18 |
| 公開(公告)號: | CN101847127A | 公開(公告)日: | 2010-09-29 |
| 發明(設計)人: | 馬曉靖 | 申請(專利權)人: | 福建星網銳捷網絡有限公司 |
| 主分類號: | G06F12/08 | 分類號: | G06F12/08 |
| 代理公司: | 北京同達信恒知識產權代理有限公司 11291 | 代理人: | 郭潤湘 |
| 地址: | 350002 福建省福州市倉*** | 國省代碼: | 福建;35 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 內存 管理 方法 裝置 | ||
技術領域
本發明涉及內存管理技術領域,尤其涉及一種內存管理方法及裝置。
背景技術
現有的內存管理方法中,有一種Slab算法,Slab算法的模型,如圖1所示,在Slab算法中,針對某一種類型對象的邏輯內存的管理分為了多級:
第一級、緩存池(cache),存放內存對象及管理緩存池自身所需的數據結構,每種對象類型都有其對應的緩存池;
第二級、緩沖塊(buffer),多個緩沖塊構成一個緩存池,每個緩沖塊容納固定個數的內存對象。緩沖塊是整個緩存池向系統申請內存時的基本單位。
緩沖塊按照其中包含的空閑的內存對象的數目,可以分為全滿(即其所有的內存對象都未被申請使用)、部分滿(即其包含的內存對象中部分已被申請使用)和全空(即其包含的內存對象中已全部被申請使用)三種類型。
第三級、內存對象(object),每個緩沖塊中包含固定個數的內存對象,是應用程序申請內存的基本單位。
現有采用虛擬內存技術、請求頁調度技術和Slab算法的內存管理方法,存在下述不足:
在應用程序申請緩存池中的內存對象時,內核中采用上述Slab算法的內存管理模塊返回給應用程序一個指向內存對象的指針,并沒有真正為這個內存對象分配對應的物理頁(物理頁是物理內存的基本單元),如果某個時刻應用程序申請內存對象時,出現了分配給應用程序的邏輯內存大小(實際就是已分配內存對象的大小總和)大于實際可用的物理內存的情況,按照現有的上述內存管理方法,可能會出現沒有可用的物理內存,從而導致應用程序的線程阻塞,直到有物理頁可用為止。
發明內容
本發明實施例提供一種內存管理方法及裝置,用以解決現有內存管理方法存在的在物理內存不足情況下導致應用程序線程出現阻塞的問題。
本發明實施例提供的一種內存的管理方法,包括:
記錄緩存池中當前可用內存對象的數量;
當緩存池中當前可用內存對象的數量低于預設的第一閾值時,為所述緩存池分配新的緩沖塊;所述新的緩沖塊所占用的物理頁的大小與所述緩存池中已有內存對象所占用的物理頁的大小的總和小于為該緩存池預留的物理內存的大??;
訪問所述新的緩沖塊,為所述新的緩沖塊中的內存對象分配對應的物理頁。
本發明實施例提供的一種內存管理裝置,包括:
記錄模塊,用于記錄緩存池中當前可用內存對象的數量;
緩沖塊分配模塊,用于當緩存池中當前可用內存對象的數量低于預設的第一閾值時,為所述緩沖池分配新的緩沖塊;所述新的緩沖塊所占用的物理頁的大小與所述緩存池中已有內存對象所占用的物理頁的大小的總和小于為該緩存池預留的物理內存的大小;
物理頁分配模塊,用于為所述新的緩沖塊中的內存對象分配對應的物理頁。
本發明實施例的有益效果包括:
本發明實施例提供的內存管理方法及裝置,對緩存池中當前可用的內存對象的數量進行監控,當出現當前可用內存對象的數量低于預先設置的第一閾值時,啟動為緩存池分配緩沖塊的步驟,并且訪問新的緩沖塊,為新的緩沖塊中的內存對象分配對應的物理頁,本發明能夠在緩存池中可用內存對象數量不足時就預先觸發為其分配新的緩沖塊的流程,并且為新的緩沖塊中的內存對象直接分配對應的物理頁,避免了現有的內存管理方法中,當應用程序申請緩存池中的內存對象時,可能出現的分配給應用程序的可用內存對象的總和大于可用的物理內存的情況導致的應用程序線程在運行過程中出現阻塞的問題。
附圖說明
圖1為現有內存管理算法中Slab算法的模型示意圖;
圖2為本發明實施例提供的內存管理方法的流程圖;
圖3為本發明實施例提供的內存管理算法的實例的示意圖;
圖4為本發明實施例提供的內存管理裝置的結構示意圖。
具體實施方式
下面結合附圖,對本發明實施例提供的一種內存管理方法及裝置進行詳細地說明。
本發明實施例提供的內存管理方法及裝置,對現有的采用Slab算法的內存管理方法做出了改進。
本發明實施例提供的內存管理方法,如圖2所示,包括下述步驟:
S201、記錄緩存池中當前的可用內存對象的數量;
S202、當緩存池中當前的可用內存對象的數量低于第一閾值時,為緩沖池分配新的緩沖塊;新的緩沖塊所占用的物理頁的大小與該緩存池中已有內存對象所占用的物理頁的大小的總和小于為該緩存池預留的物理內存的大??;
S203、逐一訪問新的緩沖塊,為新的緩沖塊的內存對象分配對應的物理頁。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于福建星網銳捷網絡有限公司,未經福建星網銳捷網絡有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201010213298.6/2.html,轉載請聲明來源鉆瓜專利網。





