[發明專利]內存管理方法、裝置、設備及計算機可讀存儲介質有效
| 申請號: | 202011215098.4 | 申請日: | 2020-11-04 |
| 公開(公告)號: | CN112214329B | 公開(公告)日: | 2023-09-22 |
| 發明(設計)人: | 葛亞駿 | 申請(專利權)人: | 騰訊科技(上海)有限公司 |
| 主分類號: | G06F9/50 | 分類號: | G06F9/50 |
| 代理公司: | 北京派特恩知識產權代理有限公司 11270 | 代理人: | 李昂;張穎玲 |
| 地址: | 201200 上海*** | 國省代碼: | 上海;31 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 內存 管理 方法 裝置 設備 計算機 可讀 存儲 介質 | ||
本申請提供了一種內存管理方法、裝置、設備及計算機可讀存儲介質;方法包括:獲取進程請求的待分配共享內存類型;從內存中預先創建的共享內存片內,獲取與所述待分配共享內存類型對應的共享內存池的管理區域地址;根據所述管理區域地址,從所述共享內存片內,獲取所述共享內存池的內存頁配置信息;根據所述內存頁配置信息,從所述內存中為所述進程動態分配共享內存單元。通過本申請,能夠根據實際需求縮放共享內存池的大小,從而可以提升內存利用率,并能更好地滿足實際業務中的內存使用需求。
技術領域
本申請涉及計算機技術,尤其涉及一種內存管理方法、裝置、設備及計算機可讀存儲介質。
背景技術
共享內存是操作系統例如Unix系統中多進程之間的通信方法,這種方法通常用于一個程序的多進程間通信,或者多個程序間的信息傳遞。此外,共享內存還常用于保存進程的內存狀態。由于共享內存的生命周期是依賴系統的運行時的,與進程生命周期獨立。因此,可以利用這一特性,通過共享內存提高進程內存數據的可用性和可靠性。在相關技術中,通常采用預分配固定共享內存池的方式實現共享內存,由于該方式需要預先固定分配較大的內存片,會導致內存占用過高,且無法很好地滿足實際應用中共享內存池縮放的使用需求。
發明內容
本申請實施例提供一種內存管理方法、裝置、設備及計算機可讀存儲介質,能夠根據實際需求縮放共享內存池的大小,從而可以提升內存利用率,并能更好地滿足實際業務中的內存使用需求。
本申請實施例的技術方案是這樣實現的:
本申請實施例提供一種內存管理方法,包括:
獲取進程請求的待分配共享內存類型;
從內存中預先創建的共享內存片內,獲取與所述待分配共享內存類型對應的共享內存池的管理區域地址;
根據所述管理區域地址,從所述共享內存片內,獲取所述共享內存池的內存頁配置信息;
根據所述內存頁配置信息,從所述內存中為所述進程動態分配共享內存單元。
在一些實施例中,所述根據所述內存頁配置信息,從所述內存中為所述進程動態分配共享內存單元,包括:根據所述內存頁配置信息,從所述內存中動態獲取所述共享內存池的內存頁;在所述內存頁中為所述進程分配共享內存單元。
在一些實施例中,所述根據所述內存頁配置信息,從所述內存中動態獲取所述共享內存池的內存頁,包括:根據所述內存頁配置信息,確定所述共享內存池的當前分配頁;在所述當前分配頁中的共享內存單元分配完的情況下,根據所述內存頁配置信息,從所述內存中申請新的內存頁作為所述共享內存池的新的當前分配頁;對應地,所述在所述內存頁中為所述進程分配共享內存單元,包括:在所述當前分配頁中為所述進程分配共享內存單元。
在一些實施例中,所述根據所述內存頁配置信息,從所述內存中申請新的內存頁作為所述共享內存池的新的當前分配頁,包括:在所述共享內存池中查找可分配內存頁;在所述共享內存池中不存在可分配內存頁的情況下,根據所述內存頁配置信息,從所述內存中申請新的內存頁;將所述新的內存頁確定為所述共享內存池的新的當前分配頁;在所述共享內存池中存在可分配內存頁的情況下,將所述可分配內存頁確定為新的當前分配頁。
在一些實施例中,所述內存頁配置信息中包括所述共享內存池的內存增長模式;所述根據所述內存頁配置信息,從所述內存中申請新的內存頁作為所述共享內存池的新的當前分配頁,包括:根據所述共享內存池的內存增長模式,確定當前內存增長量;從所述內存中申請大小為所述當前內存增長量的新的內存頁;將所述新的內存頁確定為所述共享內存池的新的當前分配頁。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于騰訊科技(上海)有限公司,未經騰訊科技(上海)有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/202011215098.4/2.html,轉載請聲明來源鉆瓜專利網。





