[發明專利]內存管理系統和方法有效
| 申請號: | 201410351834.7 | 申請日: | 2014-07-22 |
| 公開(公告)號: | CN105302734B | 公開(公告)日: | 2018-04-06 |
| 發明(設計)人: | 洪曉健;趙琛驊 | 申請(專利權)人: | 北京暢游天下網絡技術有限公司 |
| 主分類號: | G06F12/02 | 分類號: | G06F12/02 |
| 代理公司: | 北京東方億思知識產權代理有限責任公司11258 | 代理人: | 林強 |
| 地址: | 100043 北京市石景山區*** | 國省代碼: | 北京;11 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 內存 管理 系統 方法 | ||
技術領域
本公開的實施例涉及內存管理系統和方法,尤其涉及內存的分配和釋放。
背景技術
在C/C++程序的運行過程中,經常需要動態地分配、釋放不同大小的內存塊,最常見的就是使用new/delete操作符來為各種類型的對象分配和釋放內存。大多數編譯器對這兩個操作符的缺省實現是調用C運行時庫的malloc和free,但由于分配的內存塊大小不定、釋放順序不定,頻繁使用時容易產生內存碎片;另外,調用這兩個函數也比較耗時,C運行時庫實際還會多分配一些字節來維護一些信息,如內存塊的大小等。用戶請求分配的字節越少,額外的內存開銷越明顯,這些情況對應用程序的性能和穩定性不利。
發明內容
本發明目的是解決上述問題中的一個或多個。
本發明在一個方面提供一種內存管理方法,包括:
建立大內存塊;
在所述大內存塊中建立小內存塊;
接收請求分配預定大小內存的內存分配請求;
將所述預定大小與閾值進行比較;
如果所述預定大小不大于所述閾值,判斷所述大內存塊中是否存在空閑小內存塊;
如果所述大內存塊中存在空閑小內存塊,為所述請求分配所述空閑小內存塊。
本發明在另一個方面提供一種內存管理方法,包括:
接收內存釋放請求,所述請求包括要釋放的內存塊的地址和大小;
將所述內存塊大小與閾值進行比較;
如果所述內存塊大小不大于所述閾值;
根據所述內存塊大小計算節點分配器索引值;
由與所述索引值對應的節點分配器根據所述地址釋放所述內存塊。
本發明在又一個方面提供一種內存管理系統,包括:
用于管理大內存塊的塊分配器;
用于管理小內存塊的節點分配器;和
用于管理節點分配器的節點分配管理器。
根據本發明,預先通過malloc分配較大的內存塊,當應用程序需要小內存塊時,從大內存塊中分配;應用程序釋放小內存塊時,將其歸還到大內存塊中。大內存塊往往過較長時間后才通過free釋放,甚至在程序退出前才釋放。因此,可以減少malloc/free的調用,使內存的分配釋放更高效。
本發明提供的小內存塊的分配方案,其特點是分配、釋放操作非常快,能有效地減少內存碎片,保證較高的內存利用率。此方案適用于需長時間運行、頻繁分配釋放小內存塊的場合。尤其是考慮到絕大多數程序在運行過程中頻繁分配、釋放的通常是不同尺寸的小內存塊,本發明尤其有用。
附圖說明
從下面結合附圖對本發明的具體實施方式的描述中可以更好地理解本發明,其中:
圖1示出根據本發明示例性實施例的內存管理系統;
圖2示出根據本發明一個示例性實施例的鏈表;
圖3示出根據本發明另一個示例性實施例的鏈表;
圖4示出根據本發明又一個示例性實施例的鏈表;
圖5示出根據本發明示例性實施例的大內存塊的鏈表和小內存塊的鏈表形成的嵌套結構;
圖6示出根據本發明的示例性實施例的內存分配方法;
圖7示出根據本發明的示例性實施例的內存釋放方法;
圖8示出根據本發明的示例性實施例的計算裝置。
具體實施方式
下面將詳細描述本發明各個方面的特征和示例性實施例。下面的描述涵蓋了許多具體細節,以便提供對本發明的全面理解。但是,對于本領域技術人員來說顯而易見的是,本發明可以在不需要這些具體細節中的一些細節的情況下實施。下面對實施例的描述僅僅是為了通過示出本發明的示例來提供對本發明更清楚的理解。本發明絕不限于下面所提出的任何具體配置,而是在不脫離本發明的精神的前提下覆蓋了相關元素或部件的任何修改、替換和改進。
本發明中的術語“大內存塊”和“小內存塊”中的相對術語“大”和“小”是相對而言的。即“大內存塊”是指相對于“小內存塊”字節數多的內存塊,“小內存塊”是指相對于“大內存塊”字節數小的內存塊。通常“大內存塊”中可以建立一個或多個小內存塊。
圖1示出根據本發明示例性實施例的內存管理系統。內存管理系統包括用于管理大內存塊的塊分配器101,用于管理小內存塊的節點分配器102,用于管理節點分配器的節點分配管理器103。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于北京暢游天下網絡技術有限公司,未經北京暢游天下網絡技術有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201410351834.7/2.html,轉載請聲明來源鉆瓜專利網。
- 上一篇:基于SOPC的LED顯示屏控制器
- 下一篇:一種管狀半導體燈具





