[發明專利]一種內存分配方法及裝置有效
| 申請號: | 201010193362.9 | 申請日: | 2010-06-01 |
| 公開(公告)號: | CN101853215A | 公開(公告)日: | 2010-10-06 |
| 發明(設計)人: | 田歡春;宋仁春 | 申請(專利權)人: | 恒生電子股份有限公司 |
| 主分類號: | G06F12/06 | 分類號: | G06F12/06 |
| 代理公司: | 北京集佳知識產權代理有限公司 11227 | 代理人: | 逯長明;王寶筠 |
| 地址: | 310053 浙江省杭州市*** | 國省代碼: | 浙江;33 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 內存 分配 方法 裝置 | ||
技術領域
本發明涉及內存管理技術領域,特別是涉及一種內存分配方法及裝置。
背景技術
內存(Memory)也被稱為內存儲器,其作用是用于暫時存放CPU(CentralProcessing?Unit,中央處理單元)中的運算數據,以及與硬盤等外部存儲器交換的數據。內存是計算機中重要的部件之一,它是與CPU進行溝通的橋梁。計算機中所有程序的運行都是在內存中進行的,因此內存的性能對計算機的影響非常大。
在程序運行過程中,會不斷地進行內存的申請及釋放。現有技術中,是由操作系統采用一定的內存分配策略向各個程序分配內存。例如,常用的分配策略包括首次擬合法、最佳擬合法以及最差擬合法等等。但是在實際應用中,多次地向操作系統申請或釋放內存,會嚴重地加重系統的負擔,最終導致程序的運行效率下降。
發明內容
本發明提供一種內存分配方法及裝置,能夠減少向操作系統申請或釋放內存的次數,減輕系統的負擔,以適當的空間冗余,提升程序的運行效率。
本發明提供了如下方案:
一種內存分配方法,包括:
程序啟動時,向操作系統請求預置大小的內存空間;
將所述內存空間劃分為多個內存塊,并將每個內存塊劃分為多個內存槽;
保存各內存槽的大小及未使用內存槽的起始地址信息;
當進程請求內存時,根據請求的內存大小獲取符合預置條件的內存槽,并分配給該進程。
優選的,還包括:
保存內存槽的數目和/或重用內存槽地址信息。
優選的,一個內存塊中各內存槽的大小相等。
優選的,所述根據請求的內存大小獲取符合預置條件的內存槽,并分配給該程序包括:
搜索大于所述請求的內存大小的最小內存槽;
確定所述最小內存槽所在的目標內存塊;
在所述目標內存塊中搜索可用的內存槽,將所述可用的內存槽分配給該進程。
優選的,所述進程請求內存的訪問模式包括有名訪問,所述進程請求內存時,請求消息中還包括名稱鍵值;所述獲取到符合預置條件的內存槽之后還包括:
用所述請求消息中的名稱鍵值對所述符合預置條件的內存槽進行命名;
將所述名稱鍵值與該內存槽的地址通過哈希方法建立映射關系。
優選的,還包括:
對所述請求的內存空間進行管理,提供內存使用、內存泄露和/或內存跟蹤信息。
一種內存分配裝置,包括:
請求單元,用于程序啟動時,向操作系統請求預置大小的內存空間;
預分配單元,用于將所述內存空間劃分為多個內存塊,并將每個內存塊劃分為多個內存槽;
保存單元,用于保存各內存槽的大小及未使用內存槽的起始地址信息;
分配單元,用于當進程請求內存時,根據請求的內存大小獲取符合預置條件的內存槽,并分配給該進程。
優選的,所述保存單元還用于保存內存槽的數目和/或重用內存槽地址信息。
優選的,一個內存塊中各內存槽的大小相等。
優選的,所述分配單元包括:
內存槽搜索子單元,用于搜索大于所述請求的內存大小的最小內存槽;
內存塊確定子單元,用于確定所述最小內存槽所在的目標內存塊;
內存槽分配子單元,用于在所述目標內存塊中搜索可用的內存槽,將所述可用的內存槽分配給該進程。
優選的,所述進程請求內存的訪問模式包括有名訪問,所述進程請求內存時,請求消息中還包括名稱鍵值;還包括:
命名單元,用于所述獲取到符合預置條件的內存槽之后,用所述請求消息中的名稱鍵值對所述符合預置條件的內存槽進行命名;
映射單元,用于將所述名稱鍵值與該內存槽的地址通過哈希方法建立映射關系。
優選的,還包括:
內存管理單元,用于對所述請求的內存空間進行管理,提供內存使用、內存泄露和/或內存跟蹤信息。
根據本發明提供的具體實施例,本發明公開了以下技術效果:
本發明在程序啟動時,向操作系統申請大的內存空間;然后可以對該內存空間進行預分配,即將所述內存空間劃分為多個內存塊,并將每個內存塊劃分為多個內存槽;保存各內存槽的大小及未使用內存槽的起始地址信息;當有進程申請內存時,根據申請的內存大小獲取符合預置條件的內存槽,并分配給該程序。這樣,相當于實現了進程對內存的自行分配,即只需要在啟動時向操作系統申請一塊內存空間,在進行運行過程中,需要申請或釋放內存時,都可以不再需要向操作系統發起請求,而是直接由進程進行分配,因此,能夠減少向操作系統申請或釋放內存的次數,減輕系統的負擔。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于恒生電子股份有限公司,未經恒生電子股份有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201010193362.9/2.html,轉載請聲明來源鉆瓜專利網。
- 上一篇:一種生成頁碼文件的方法及裝置
- 下一篇:一種軟件性能的檢測方法及裝置





