亚洲狠狠干,亚洲国产福利精品一区二区,国产八区,激情文学亚洲色图

基于哈希表的單進程動態(tài)存儲管理方法

文檔序號:9371863閱讀:547來源:國知局
基于哈希表的單進程動態(tài)存儲管理方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明屬于嵌入式系統(tǒng)內(nèi)存動態(tài)管理技術(shù)領(lǐng)域,具體涉及一種基于哈希表的單進程動態(tài)存儲管理方法。
【背景技術(shù)】
[0002]現(xiàn)有嵌入式系統(tǒng)的內(nèi)存管理模塊主要負責內(nèi)存單元的分配、回收和換入換出,其中,“分配”負責在進程向系統(tǒng)申請內(nèi)存單元時,從空閑內(nèi)存單元列表中挑選出合適的內(nèi)存單元分配給進程;“回收”負責當進程釋放內(nèi)存單元時,將釋放的內(nèi)存單元重新放入空閑內(nèi)存單元列表,并做適當?shù)乃槠?;“換出”負責當物理內(nèi)存不足時,將不緊急的進程數(shù)據(jù)或代碼先存放到外存(磁盤等)上,從而把它們占用的內(nèi)存單元騰出來給緊急的進程使用,或者交給計算機系統(tǒng)使用;“換入”負責在必要的時候,將已經(jīng)換出的進程數(shù)據(jù)或代碼寫回已經(jīng)空閑的內(nèi)存單元中。
[0003]目前,內(nèi)存動態(tài)管理方面的研究主要解決操作系統(tǒng)底層內(nèi)存動態(tài)分配、釋放及碎片整理方面的問題,這些研究都是提高系統(tǒng)內(nèi)存的管理效率,但是,在應用層程序調(diào)試中,程序動態(tài)內(nèi)存溢出時無法實時探知,內(nèi)存泄露也沒有手段實時監(jiān)控,且無法準確定位內(nèi)存溢出、泄漏的代碼的位置,是當前內(nèi)存動態(tài)管理中需要解決的問題。

【發(fā)明內(nèi)容】

[0004]本發(fā)明所解決的技術(shù)問題是克服現(xiàn)有的在應用層程序調(diào)試中,程序動態(tài)內(nèi)存溢出時無法實時探知,內(nèi)存泄露也沒有手段實時監(jiān)控,且無法準確定位內(nèi)存溢出、泄漏的代碼的位置的問題。
[0005]為了達到上述目的,本發(fā)明所采用的技術(shù)方案是:
一種基于哈希表的單進程動態(tài)存儲管理方法,其特征在于:用于運行在單個應用進程上,占用應用進程的空閑時間實時監(jiān)測檢查動態(tài)內(nèi)存使用情況,并通過消息隊列將監(jiān)測結(jié)果發(fā)送給框架程序,由框架程序負責整理及提供查詢,具體包括以下步驟,
步驟(I ),在應用進程的初始化階段,調(diào)用哈希表的初始化接口,建立一張空的哈希表,所述哈希表包括最大內(nèi)存申請塊數(shù)、每塊內(nèi)存信息,其中每塊內(nèi)存信息包括有效標志、申請內(nèi)存的起始地址、申請內(nèi)存大小、申請該內(nèi)存代碼位置,每塊內(nèi)存包括ZONEl區(qū)域、Z0NE2區(qū)域、Z0NE3區(qū)域、Z0NE4區(qū)域、Z0NE5區(qū)域五個區(qū)域;
步驟(2),當應用進程通過動態(tài)內(nèi)存申請接口申請動態(tài)內(nèi)存時,該接口調(diào)用mal1c函數(shù)申請內(nèi)存,同時將該片內(nèi)存初始化,初始化內(nèi)存的具體過程為,
(1)將申請內(nèi)存的程序位置信息存入ZONEl區(qū)域;
(2)將用戶申請的內(nèi)存大小存入Z0NE2區(qū)域;
(3)在Z0NE3區(qū)域和Z0NE5區(qū)域部分填入標識性字符,標志字符是用于判斷用戶數(shù)據(jù)區(qū)溢出的標志字;
(4)以Z0NE4區(qū)域的內(nèi)存起始地址為哈希表的鍵值計算存儲位置,并將ZONEl區(qū)域的起始地址存入哈希表,將該節(jié)點置為有效節(jié)點;
(5)將Z0NE4區(qū)域的首地址返回給應用進程;
步驟(3),當應用進程通過動態(tài)內(nèi)存釋放接口釋放動態(tài)內(nèi)存時,在哈希表中查找,找到申請的動態(tài)內(nèi)存后,調(diào)用free函數(shù)釋放動態(tài)內(nèi)存;
步驟(4),在應用進程的初始化完成后,通過實時巡檢接口,在程序運行空閑時,檢查動態(tài)內(nèi)存的溢出及內(nèi)存泄露風險,具體過程為,
(1)將按照哈希表的各塊內(nèi)存的順序,逐一檢查每個內(nèi)存塊的用于放置標識性字符的Z0NE3區(qū)域、Z0NE5區(qū)域;同時,將哈希表中每塊內(nèi)存的大小加起來,每小時存儲一次;
(2)若發(fā)現(xiàn)Z0NE3區(qū)域或者Z0NE5區(qū)域發(fā)生變化,則給出警示信息,顯示動態(tài)內(nèi)存區(qū)出現(xiàn)溢出及溢出的位置,并提示用戶處理;
(3)當內(nèi)存總量計算值達到一定數(shù)量,所述數(shù)量可通過參數(shù)配置,每小時一次檢查存儲值是否有增加的趨勢,若存在增加趨勢,則給出警示信息,提示用戶處理,并將信息通過消息隊列發(fā)送給框架程序,由框架程序保存并提供查詢接口 ;
步驟(5),框架程序負責接收各個應用進程的內(nèi)存異常信息,存儲內(nèi)存異常信息,并提供查詢功能。
[0006]前述的基于哈希表的單進程動態(tài)存儲管理方法,其特征在于:步驟(1),將應用申請的內(nèi)存劃分為5個區(qū),其中,ZONEl區(qū)域用于存儲內(nèi)存申請代碼的位置;Z0NE2區(qū)域用于存儲內(nèi)存申請的大??;Z0NE3區(qū)域和Z0NE5區(qū)域用于存儲標識性字符;Z0NE4區(qū)域用于用戶區(qū)。
[0007]前述的基于哈希表的單進程動態(tài)存儲管理方法,其特征在于:步驟(3),當應用進程通過動態(tài)內(nèi)存釋放接口釋放動態(tài)內(nèi)存時,,如找不到需釋放的動態(tài)內(nèi)存,則給出警示信息,提示程序指針可能異常,并通過消息隊列將該異常傳遞給框架程序,由框架程序保存并提供查詢接口。
[0008]前述的基于哈希表的單進程動態(tài)存儲管理方法,其特征在于:步驟(5),由框架程序統(tǒng)一收集管理單個進程的內(nèi)存監(jiān)測信息,并及時提示程序風險,另外,還提供歷史監(jiān)測信息的查詢。
[0009]本發(fā)明的有益效果是:本發(fā)明的基于哈希表的單進程動態(tài)存儲管理方法,包括哈希表初始化、動態(tài)內(nèi)存申請、動態(tài)內(nèi)存釋放、實時巡檢,創(chuàng)建空的哈希表,保存動態(tài)存儲申請信息;在動態(tài)內(nèi)存申請中,將申請內(nèi)存的相關(guān)信息存入哈希表,并設立溢出標志;在動態(tài)內(nèi)存釋放中,通過查找哈希表,找到相關(guān)指針則釋放,找不到則給出警示;在實時巡檢調(diào)用中,通過逐個檢查哈希表節(jié)點中內(nèi)存區(qū)的溢出標志字,判斷動態(tài)內(nèi)存是否溢出,將哈希表中的所有內(nèi)存空間大小加起來,并按照I小時存儲一次的頻率存儲,判斷是否存在內(nèi)存溢出的風險,占用進程空閑時間實時監(jiān)測檢查動態(tài)內(nèi)存使用情況,并通過消息隊列將監(jiān)測結(jié)果發(fā)送給框架,由框架負責整理及提供查詢,能夠解決應用進程動態(tài)內(nèi)存溢出及內(nèi)存泄露問題的定位,提高嵌入式系統(tǒng)應用程序的調(diào)試及測試效率,具有良好的應用前景。
【附圖說明】
[0010]圖1是本發(fā)明的基于哈希表的單進程動態(tài)存儲管理方法的流程圖。
[0011]圖2是本發(fā)明的哈希表的結(jié)構(gòu)示意圖。
[0012]圖3是本發(fā)明的基于哈希表的單進程動態(tài)存儲管理方法的層次結(jié)構(gòu)圖。
【具體實施方式】
[0013]下面將結(jié)合說明書附圖,對本發(fā)明作進一步的說明。
[0014]本發(fā)明的基于哈希表的單進程動態(tài)存儲管理方法,用于運行在單個應用進程上,占用應用進程的空閑時間實時監(jiān)測檢查動態(tài)內(nèi)存使用情況,并通過消息隊列將監(jiān)測結(jié)果發(fā)送給框架程序,由框架程序負責整理及提供查詢,如圖1所示,具體包括以下步驟,
步驟(I ),在應用進程的初始化階段,調(diào)用哈希表的初始化接口,建立一張空的哈希表,所述哈希表包括最大內(nèi)存申請塊數(shù)、每塊內(nèi)存信息,其中每塊內(nèi)存信息包括有效標志、申請內(nèi)存的起始地址、申請內(nèi)存大小、申請該內(nèi)存代碼位置,每塊內(nèi)存包括ZONEl區(qū)域、Z0NE2區(qū)域、Z0NE3區(qū)域、Z0NE4區(qū)域、Z0NE5區(qū)域五個區(qū)域,ZONEl區(qū)域用于存儲內(nèi)存申請代碼的位置;Z0NE2區(qū)域用于存儲內(nèi)存申請的大?。籞0NE3區(qū)域和Z0NE5區(qū)域用于存儲標識性字符;Z0NE4區(qū)域用于用戶區(qū),哈希表的結(jié)
當前第1頁1 2 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1