[發明專利]一種內存泄露的修復方法和裝置有效
| 申請號: | 201711480364.4 | 申請日: | 2017-12-29 |
| 公開(公告)號: | CN108108258B | 公開(公告)日: | 2020-11-06 |
| 發明(設計)人: | 王亞亮 | 申請(專利權)人: | 杭州迪普科技股份有限公司 |
| 主分類號: | G06F11/07 | 分類號: | G06F11/07 |
| 代理公司: | 北京博思佳知識產權代理有限公司 11415 | 代理人: | 林祥 |
| 地址: | 310051 浙江省杭*** | 國省代碼: | 浙江;33 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 內存 泄露 修復 方法 裝置 | ||
本申請提供了一種內存泄露的修復方法,通過組織兩種紅黑樹記錄內存申請過程中的多種信息,其中,第一紅黑樹以進程ID為鍵值,記錄申請內存的總次數和申請內存的總值;第二紅黑樹以申請內存的釋放地址為鍵值,記錄進程ID和對應第一紅黑樹申請內存的總次數的當前次數值;在兩種情況下進行內存釋放處理:1.當第一紅黑樹中有節點申請的總內存值大于第一閾值,且所述節點的申請內存的總次數值大于第二閾值時,釋放預設申請次數的內存值并對應修改紅黑樹中的申請內存的總次數值信息;2.當某個進程退出后,根據退出進程的ID釋放該進程占用的內存并對應刪除該進程在紅黑樹中的信息。
技術領域
本申請涉及內存領域,特別是涉及一種內存泄露的修復方法和裝置。
背景技術
內存是各種智能設備的常用器件,高效的內存管理能夠給系統提供穩定的運行環境。但系統有時會發生內存泄漏。內存泄漏(Memory Leak)是指程序中己動態分配的堆內存由于某種原因程序未釋放或無法釋放,造成系統內存的浪費,導致程序運行速度減慢甚至系統崩潰等嚴重后果。內存泄漏得越多,就會造成內存占用越多。
系統中內存處理的一般步驟是申請內存,使用內存,釋放內存。內存泄露就是申請了內存,卻沒有釋放內存。現有技術只能對內存泄漏做出檢測,以便查看內存泄漏的地址,定位系統異常提供信息等,現在并沒有一種較好的內存泄漏的修復方法,無法使系統在發生內存泄漏后也可以長時間穩定運行。
發明內容
為解決上述技術問題,本申請提供了一種內存泄露的修復方法和裝置,技術方案如下:
一種內存泄露的修復方法,所述方法包括:
根據內存申請與釋放信息實時更新第一紅黑樹與第二紅黑樹中的數據,其中,第一紅黑樹以進程ID為鍵值,記錄申請內存的總次數值和申請內存的總值;第二紅黑樹以申請內存的釋放地址為鍵值,記錄進程ID和對應第一紅黑樹申請內存的總次數的當前次數值;
判斷第一紅黑樹的各個節點數據,確定是否有節點申請內存的總值大于第一閾值;
若有節點申請內存的總值大于第一閾值,則繼續判斷所述節點的申請內存的總次數是否大于第二閾值;
若所述節點的申請內存的總次數大于第二閾值,則進行內存釋放,以使內存被回收利用。
一種內存泄露的修復方法,所述方法包括:
根據內存申請與釋放信息實時更新第一紅黑樹與第二紅黑樹中的數據,其中,第一紅黑樹以進程ID為鍵值,記錄申請內存的總次數值和申請內存的總值;第二紅黑樹以申請內存的釋放地址為鍵值,記錄進程ID和對應第一紅黑樹申請內存的總次數的當前次數值;
當進程退出后,確定所述退出進程的ID,遍歷第二紅黑樹中的各個節點,確定第二紅黑樹中進程ID和退出進程的ID相同的多個節點,釋放所述多個節點對應的內存,并刪除節點以及節點對應的結構體;
遍歷第一紅黑樹中的各個節點,確定第一紅黑樹中進程ID和退出進程的ID相同的節點,刪除所述節點以及節點對應的結構體。
一種內存泄露的修復裝置,所述裝置包括:
數據更新模塊:用于根據內存申請與釋放信息實時更新第一紅黑樹與第二紅黑樹中的數據,其中,第一紅黑樹以進程ID為鍵值,記錄申請內存的總次數值和申請內存的總值;第二紅黑樹以申請內存的釋放地址為鍵值,記錄進程ID和對應第一紅黑樹申請內存的總次數的當前次數值;
第一判斷模塊:用于判斷第一紅黑樹的各個節點數據,確定是否有節點申請內存的總值大于第一閾值;
第二判斷模塊:若有節點申請內存的總值大于第一閾值,則繼續判斷所述節點的申請內存的總次數是否大于第二閾值;
第一內存釋放模塊:若所述節點的申請內存的總次數大于第二閾值,則進行內存釋放,以使內存被回收利用。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于杭州迪普科技股份有限公司,未經杭州迪普科技股份有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201711480364.4/2.html,轉載請聲明來源鉆瓜專利網。





