欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種嵌入式系統(tǒng)中內(nèi)存泄漏診斷處理的方法和裝置的制造方法

文檔序號:9921931閱讀:741來源:國知局
一種嵌入式系統(tǒng)中內(nèi)存泄漏診斷處理的方法和裝置的制造方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明屬于計算機技術(shù)應(yīng)用領(lǐng)域,具體涉及一種嵌入式系統(tǒng)中內(nèi)存泄漏診斷處理的方法和裝置。
【背景技術(shù)】
[0002]嵌入式系統(tǒng)是一種資源比較受限的系統(tǒng),因此如何高效復(fù)用有限的系統(tǒng)資源,特別是如何利用好有限的內(nèi)存資源,發(fā)揮最大運行效率,成為嵌入式系統(tǒng)性能的關(guān)鍵問題。
[0003]嵌入式系統(tǒng)中,大多數(shù)方案采用動態(tài)內(nèi)存管理方式,而所謂的動態(tài)內(nèi)存也就是及時申請內(nèi)存,用完及時釋放內(nèi)存,而在這個過程中經(jīng)常出現(xiàn)程序bug或者人員疏忽,導(dǎo)致內(nèi)存無法釋放,出現(xiàn)內(nèi)存泄漏問題,隨著系統(tǒng)長時間運行,內(nèi)存越用越少,最后無內(nèi)存可用,程序最終會因為沒有足夠內(nèi)存空間而無法正常運行,導(dǎo)致系統(tǒng)奔潰死機,后果非常嚴重。因此,如何自動有效地準確檢測內(nèi)存泄漏并合理釋放內(nèi)存是一個亟待解決的棘手難題。
[0004]以往,傳統(tǒng)的內(nèi)存泄漏檢測及處理方法,一是在調(diào)試或者測試階段,使用自動測試軟件通過對內(nèi)存進行插粧,內(nèi)存使用情況被記錄到自動測試軟件的數(shù)據(jù)庫中,事后人為分析判斷是否存在內(nèi)存泄漏,并通過人工檢查方式對內(nèi)存泄漏位置進行定位;二是判斷應(yīng)用程序所占用的內(nèi)存時間是否超過預(yù)先設(shè)定的內(nèi)存生命周期,當超過生命周期時,判斷為發(fā)生內(nèi)存泄漏,并簡單粗暴地強制釋放內(nèi)存。參考專利文獻CN101414272B公開了一種內(nèi)存泄漏的檢測方法和裝置,通過被檢測內(nèi)存的當前被占用時間是否超過預(yù)先為被檢測內(nèi)存設(shè)置的生命周期,以及被檢測內(nèi)存是否正在被申請被檢測內(nèi)存的業(yè)務(wù)進程所使用,判斷被測內(nèi)存是否發(fā)生泄漏。
[0005]傳統(tǒng)的內(nèi)存泄漏檢測及處理方法過于簡單,比較機械,實時性不夠,處理方法不夠靈活恰當,在實際應(yīng)用中效果差強人意。且存在很多缺點:一是采用插粧方式,只能在調(diào)試或者測試階段進行,無法在系統(tǒng)正式部署運行期間進行內(nèi)存泄漏檢測,實時性不夠;二是采用插粧方式,需要人為分析判斷是否有內(nèi)存泄漏,并人為檢查定位內(nèi)存泄漏位置,大量內(nèi)存申請和釋放過程,導(dǎo)致排查工作量大,難度高,效率低;三是通過內(nèi)存的生命周期簡單判斷為內(nèi)存泄漏,存在誤判情況;四是簡單粗暴地強制釋放內(nèi)存,可能導(dǎo)致關(guān)鍵功能失效異常,影響用戶正常使用。

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

[0006]針對傳統(tǒng)的內(nèi)存泄漏檢測處理方法存在的不足之處,本發(fā)明提出了一種嵌入式系統(tǒng)中內(nèi)存泄漏診斷處理的方法和裝置。通過內(nèi)存管理模塊與應(yīng)用程序的動態(tài)協(xié)調(diào),自動有效地準確診斷內(nèi)存泄漏情況,靈活合理地分配和釋放內(nèi)存,避免簡單粗暴地強制釋放內(nèi)存,導(dǎo)致正在運行的功能失效異常。本發(fā)明實現(xiàn)簡單,檢測準確,處理方法動態(tài)靈活,具有實時性高,實用性強,準確可靠,動態(tài)靈活,具有良好的應(yīng)用價值和經(jīng)濟效益。
[0007]本發(fā)明采用如下技術(shù)方案:
[0008]—種嵌入式系統(tǒng)中內(nèi)存泄漏診斷處理的方法,該方法包括以下步驟,
[0009]SI,將內(nèi)存劃分成大小不同的內(nèi)存塊,每個內(nèi)存塊等分成多個子內(nèi)存,內(nèi)存塊i的子內(nèi)存大小定義為Si,i = l,2,3,…,M,且SKSKXSm,將應(yīng)用程序申請在用的子內(nèi)存管理串接起來構(gòu)成申請鏈表;
[0010]S2,根據(jù)應(yīng)用程序申請內(nèi)存的大小S,申請一個大于等于S的子內(nèi)存Si,并將該子內(nèi)存節(jié)點添加到申請鏈表中;
[0011]S3,應(yīng)用程序用完內(nèi)存后,釋放該子內(nèi)存,刪除申請表鏈中的該子內(nèi)存節(jié)點;
[0012]S4,以固定周期掃描申請鏈表上的所有子內(nèi)存節(jié)點,當一個子內(nèi)存占用時間超過內(nèi)存生命周期時,通知應(yīng)用程序進行處理。
[0013]進一步的,步驟S2中應(yīng)用程序初步申請內(nèi)存的步驟包括,
[0014]S210,從子內(nèi)存最小的內(nèi)存塊i = I開始檢索,依次從小到大檢索內(nèi)存塊;
[0015]S211,判斷內(nèi)存塊中剩余內(nèi)存?zhèn)€數(shù)Pi是否大于零,若是則跳轉(zhuǎn)到步驟S212,若否則1 = 1+1,判斷1是否大于1如果1大于1申請內(nèi)存失敗,如果1不大于1,則轉(zhuǎn)到步驟3211;
[0016]S212,判斷應(yīng)用申請內(nèi)存的大小S是否小于等于子內(nèi)存大小Si,若是則申請內(nèi)存成功,若否則i = i + l,判斷i是否大于M,如果i大于M,申請內(nèi)存失敗,如果i不大于M,則轉(zhuǎn)到步驟S211。
[0017]更進一步的,步驟S211或步驟S212中的申請內(nèi)存失敗進入深度申請內(nèi)存步驟,
[0018]S220,檢索申請鏈表中的所有子內(nèi)存節(jié)點,將子內(nèi)存大小Si大于申請內(nèi)存大小S且子內(nèi)存占用優(yōu)先級小于申請內(nèi)存優(yōu)先級的子內(nèi)存節(jié)點檢索出來,檢索成功轉(zhuǎn)到步驟S221,檢索失敗則申請內(nèi)存失?。?br>[0019]S221,將檢索結(jié)果中優(yōu)先級最低且內(nèi)存最小的子內(nèi)存定義為備用子內(nèi)存;
[0020]S222,釋放備用子內(nèi)存給當前申請的應(yīng)用程序使用,申請內(nèi)存成功。
[0021]更進一步的,步驟S221中,如果檢索結(jié)果中優(yōu)先級最低且內(nèi)存最小的子內(nèi)存大于一個,則將占用時間長度最長的子內(nèi)存定義為備用子內(nèi)存。
[0022]進一步的,步驟S4中通知應(yīng)用程序進行處理包括延長內(nèi)存生命周期,或者更改內(nèi)存占用優(yōu)先級,或者直接釋放內(nèi)存,或者應(yīng)用程序內(nèi)存泄漏自動釋放內(nèi)存。
[0023]一種嵌入式系統(tǒng)中內(nèi)存泄漏診斷處理的裝置,它包括,
[0024]內(nèi)存分配管理單元,用于將內(nèi)存劃分成大小不同的內(nèi)存塊,每個內(nèi)存塊等分成多個子內(nèi)存,內(nèi)存塊i的子內(nèi)存大小定義為Si,i = I,2,3,…,M,且SKS2OXSm,將應(yīng)用程序申請在用的子內(nèi)存管理串接起來構(gòu)成申請鏈表;
[0025]內(nèi)存申請單元,用于根據(jù)應(yīng)用程序申請內(nèi)存的大小S,申請一個大于等于S的子內(nèi)存Si,并將該子內(nèi)存節(jié)點添加到申請鏈表中;
[0026]內(nèi)存釋放單元,用于應(yīng)用程序用完內(nèi)存后,釋放該子內(nèi)存,刪除申請表鏈中的該子內(nèi)存節(jié)點;
[0027 ]內(nèi)存診斷單元,用于以固定周期掃描申請鏈表上的所有子內(nèi)存節(jié)點,當一個子內(nèi)存占用時間超過內(nèi)存生命周期時,通知應(yīng)用程序進行處理。
[0028]進一步的,內(nèi)存申請單元包括初步申請內(nèi)存單元和深度申請內(nèi)存單元。
[0029]更進一步的,初步申請內(nèi)存單元用于從內(nèi)存塊中剩余未使用子內(nèi)存中申請一個大于等于S的子內(nèi)存。
[0030]更進一步的,深度申請內(nèi)存單元,在初步申請單元中申請失敗后,從申請鏈表中將子內(nèi)存大小S1大于申請內(nèi)存大小S且子內(nèi)存占用優(yōu)先級小于申請內(nèi)存優(yōu)先級的子內(nèi)存節(jié)點檢索出來后,查找優(yōu)先級最低且內(nèi)存最小的子內(nèi)存,將該子內(nèi)存釋放給當前申請的應(yīng)用程序使用。
[0031]更進一步的,優(yōu)先級最低且內(nèi)存最小的子內(nèi)存大于一個,則將其中占用時間長度最長的子內(nèi)存釋放給當前申請的應(yīng)用程序使用。
[0032]更進一步的,通知應(yīng)用程序進行處理包括延長內(nèi)存生命周期,或者更改內(nèi)存占用優(yōu)先級,或者直接釋放內(nèi)存,或者應(yīng)用程序內(nèi)存泄漏自動釋放內(nèi)存。
[0033]本發(fā)明具有如下有益效果:一是能夠在系統(tǒng)運行過程中自動檢測內(nèi)存泄漏情況,不影響系統(tǒng)正常運行,實時性高,實用性強;二是能夠自動有效地定位內(nèi)存泄漏點,大大降低內(nèi)存泄漏排查難度,準確可靠,維護效率高;三是通過內(nèi)存管理模塊與應(yīng)用程序的動態(tài)協(xié)商,確認內(nèi)存泄漏情況,檢測準確度高;四是通過內(nèi)存管理模塊與應(yīng)用程序的動態(tài)協(xié)商,確認內(nèi)存釋放方式,避免強制釋放內(nèi)存導(dǎo)致應(yīng)用功能失效異常;五是在內(nèi)存不足時,根據(jù)內(nèi)存應(yīng)用等級,強制釋放一些優(yōu)先級比較低的內(nèi)存,確保高優(yōu)先級應(yīng)用功能得到正常運行。
【附圖說明】
[0034]圖1是內(nèi)存塊的結(jié)構(gòu)圖;
[0035]圖2是初步申請內(nèi)存的流程圖;
[0036]圖3是深度申請內(nèi)存的流程圖;
[0037]圖4是車輛綜合信息服務(wù)系統(tǒng)圖。
【具體實施方式】
[0038]為進一步說明各實施例,本發(fā)明提供有附圖。這些附圖為本發(fā)明揭露內(nèi)容的一部分,其主要用以說明實施例,并可配合說明書
當前第1頁1 2 3 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
东山县| 东阿县| 琼结县| 江达县| 焦作市| 武义县| 江安县| 金沙县| 资阳市| 栖霞市| 黄骅市| 高雄县| 甘孜| 莱芜市| 清原| 灵宝市| 潜山县| 弥渡县| 彩票| 盘山县| 梅河口市| 望谟县| 吴忠市| 丰宁| 湘阴县| 子长县| 吉木萨尔县| 珠海市| 建平县| 仁寿县| 陇南市| 彰武县| 滁州市| 密山市| 汉阴县| 沈丘县| 佛冈县| 锦州市| 高安市| 新津县| 思茅市|