[發明專利]內存管理方法、裝置、設備及存儲介質有效
| 申請號: | 201810966811.5 | 申請日: | 2018-08-23 |
| 公開(公告)號: | CN109597683B | 公開(公告)日: | 2021-05-07 |
| 發明(設計)人: | 吳兆玉 | 申請(專利權)人: | 北京字節跳動網絡技術有限公司 |
| 主分類號: | G06F9/50 | 分類號: | G06F9/50 |
| 代理公司: | 北京品源專利代理有限公司 11332 | 代理人: | 孟金喆 |
| 地址: | 100041 北京市石景山區*** | 國省代碼: | 北京;11 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 內存 管理 方法 裝置 設備 存儲 介質 | ||
1.一種內存管理方法,其特征在于,所述方法包括:
根據預設原則,將全局變量分為至少兩個片段;
通過至少兩個鏈表指針將所述至少兩個片段串聯成鏈表,所述至少兩個鏈表指針指向對應的片段的內存地址;
在滿足預設條件時,獲取全局變量的元素及占用內存;
生成一個片段,作為重建片段,所述重建片段包括起始內存地址;
根據所述至少兩個片段中每個片段中的元素,基于所述起始內存地址重新申請內存并將所述每個片段中的元素復制到重新申請的內存中,在一個片段中的所有元素復制完成后釋放該片段對應的重建前的占用內存,根據重建后的片段的內存地址,修改對應的鏈表指針所指向的內存地址;并在重建片段中的元素不符合所述預設原則時,將下一片段中的元素復制到緊鄰所述重建片段中的最后一個元素的內存地址的內存中,在所述重建片段中的元素符合所述預設原則時新生成一個重建片段;
當獲取到新元素時,將所述新元素寫入所述鏈表的最后一個片段;
其中,所述鏈表的讀寫機制包括:最后一個片段外的其他片段不允許寫入新元素且不允許刪減元素,允許對已有元素的更新。
2.根據權利要求1所述的方法,其特征在于,還包括:
在讀寫最后一個片段時進行加鎖,并在讀寫完畢時釋放鎖。
3.根據權利要求1所述的方法,其特征在于,還包括:
當所述最后一個片段符合預設原則時,新生成一個片段,并通過對應的鏈表指針將新生成的片段追加到鏈表尾部,所述新生成的片段用于接收后續寫入的元素。
4.根據權利要求1所述的方法,其特征在于,所述預設原則包括預設元素數量。
5.一種內存管理裝置,其特征在于,所述裝置包括:
全局變量劃分模塊,用于根據預設原則,將全局變量分為至少兩個片段;
鏈表形成模塊,用于通過至少兩個鏈表指針將所述至少兩個片段串聯成鏈表,所述至少兩個鏈表指針指向對應的片段的內存地址;
數據獲取模塊,用于在滿足預設條件時,獲取全局變量的元素及占用內存;
全局變量重建模塊,用于根據所述全局變量的元素,重新申請內存以對所述全局變量進行重建,并釋放所述占用內存;
新元素寫入模塊,用于當獲取到新元素時,將所述新元素寫入所述鏈表的最后一個片段;
所述全局變量重建模塊包括:
重建單元,用于生成一個片段,作為重建片段,所述重建片段包括起始內存地址;根據所述至少兩個片段中每個片段中的元素,基于所述起始內存地址重新申請內存并將所述每個片段中的元素復制到重新申請的內存中,在一個片段中的所有元素復制完成后釋放該片段對應的重建前的占用內存;并在重建片段中的元素不符合所述預設原則時,將下一片段中的元素復制到緊鄰所述重建片段中的最后一個元素的內存地址的內存中,在所述重建片段中的元素符合所述預設原則時新生成一個重建片段;
所述全局變量重建模塊還包括:
鏈表指針修改單元,用于根據重建后的片段的內存地址,修改對應的鏈表指針所指向的內存地址;
其中,所述鏈表的讀寫機制包括:最后一個片段外的其他片段不允許寫入新元素且不允許刪減元素,允許對已有元素的更新。
6.一種內存管理設備,其特征在于,包括:
一個或多個處理器;
存儲器,用于存儲一個或多個程序;
當所述一個或多個程序被所述一個或多個處理器執行,使得所述一個或多個處理器實現如權利要求1-4任一所述的內存管理方法。
7.一種計算機可讀存儲介質,其上存儲有計算機程序,其特征在于,該計算機程序被處理器執行時實現如權利要求1-4任一所述的內存管理方法。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于北京字節跳動網絡技術有限公司,未經北京字節跳動網絡技術有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201810966811.5/1.html,轉載請聲明來源鉆瓜專利網。





