[發明專利]一種內存管理方法及系統有效
| 申請號: | 201610987681.4 | 申請日: | 2016-11-09 |
| 公開(公告)號: | CN108062247B | 公開(公告)日: | 2021-09-14 |
| 發明(設計)人: | 劉海鵬 | 申請(專利權)人: | 騰訊科技(深圳)有限公司 |
| 主分類號: | G06F9/50 | 分類號: | G06F9/50 |
| 代理公司: | 廣州三環專利商標代理有限公司 44202 | 代理人: | 郝傳鑫;賈允 |
| 地址: | 518000 廣東省深圳*** | 國省代碼: | 廣東;44 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 內存 管理 方法 系統 | ||
本發明公開了一種內存管理方法及系統,屬于互聯網技術領域。方法包括:向操作系統申請指定大小的內存作為預留內存;設置目標覆蓋函數;通過目標覆蓋函數截獲各內存分配器向操作系統申請內存的請求,并將截獲的請求發送給操作系統;通過目標覆蓋函數監控操作系統對請求的響應結果;根據響應結果判斷向操作系統申請內存是否成功;若否,則將預留內存歸還給操作系統;通過目標覆蓋函數重新向操作系統發送申請內存的請求。本發明覆蓋了各內存分配器向系統申請內存的過程,引入預留內存以解決內存分配器向操作系統申請內存失敗報內存不足錯誤OOM的問題,從而在很大程度上減少了內存不足錯誤的發生頻率。
技術領域
本發明涉及互聯網技術領域,尤其涉及一種內存管理方法及系統。
背景技術
以瀏覽器應用為代表的復雜應用,一般由多個模塊組成,這些模塊可能采用不同的內存管理方式,使用不同的內存分配器,相互之間沒有更多的了解,彼此向系統申請內存也是缺乏協調的。這容易導致進程虛存空間的碎片及內存空間內存不足錯誤,或稱OOM(OutOf Memory)錯誤。
現有技術中處理內存申請的過程如圖1所示:
第一步:各內存分配器分別接收程序申請內存的請求;
第二步:各內存分配器分別處理內存請求,若響應失敗,則向操作系統發出申請內存的請求;
第三步,操作系統接收到內存分配器發送的請求后,處理請求,若處理失敗,則報內存不足錯誤(OOM)。
可見,現有技術中,一般僅在內存分配器內部設有處理內存碎片方案,以防止因為內存碎片引起的內存不足,但是在各內存分配器與系統之間,并沒有處理內存不足的技術方案。
發明內容
為了解決上述問題,本發明提供了一種內存管理方法及系統,用以解決內存分配器向系統請求內存過程中內存不足的問題。
本發明實施例第一方面公開一種內存管理方法,包括:
向操作系統申請指定大小的內存作為預留內存;
設置目標覆蓋函數;
通過目標覆蓋函數截獲各內存分配器向操作系統申請內存的請求,并將截獲的請求發送給操作系統;
通過目標覆蓋函數監控操作系統對所述請求的響應結果;
根據響應結果判斷向操作系統申請內存是否成功;
若否,則將所述預留內存歸還給操作系統;
通過目標覆蓋函數重新向操作系統發送申請內存的請求。
進一步地,
所述通過目標覆蓋函數重新向操作系統發送申請內存的請求后,還包括:
通知各內存分配器對應的內存控制模塊回收內存。
進一步地,所述設置目標覆蓋函數,包括:
將內存分配器向操作系統申請內存改為調用目標覆蓋函數向操作系統申請內存。
可選地,所述設置目標覆蓋函數,包括:
建立包含所述目標覆蓋函數的目標覆蓋函數共享庫,將所述目標覆蓋函數命名為和操作系統中的系統內存分配函數一致;所述系統內存分配函數用于響應申請內存的請求;
先加載所述目標覆蓋函數共享庫;
再加載所述系統內存分配函數所在的共享庫。
可選地,所述設置目標覆蓋函數,包括:
建立包含中間函數的中間函數共享庫,所述中間函數共享庫與各內存分配器所在的共享庫靜態連接;
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于騰訊科技(深圳)有限公司,未經騰訊科技(深圳)有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201610987681.4/2.html,轉載請聲明來源鉆瓜專利網。
- 上一篇:一種位置管理方法及裝置
- 下一篇:一種添加硅酸三鈣來提高轉爐鋼渣活性的方法





