[發明專利]應用內存管理方法和裝置有效
| 申請號: | 201110418187.3 | 申請日: | 2011-12-14 |
| 公開(公告)號: | CN103164290B | 公開(公告)日: | 2017-08-04 |
| 發明(設計)人: | 易壬俊 | 申請(專利權)人: | 騰訊科技(深圳)有限公司 |
| 主分類號: | G06F11/00 | 分類號: | G06F11/00;G06F12/02 |
| 代理公司: | 北京三高永信知識產權代理有限責任公司11138 | 代理人: | 王希剛 |
| 地址: | 518000 廣東省深*** | 國省代碼: | 廣東;44 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 應用 內存 管理 方法 裝置 | ||
技術領域
本發明涉及通信技術領域,特別涉及一種應用內存管理方法和裝置。
背景技術
開發低端手機平臺上的原生應用程序(手機Java應用不屬于)一般是使用C語言或者C++語言,并且平臺提供的內存管理機制比較原始,需要應用開發者具有良好的素質,否則很容易造成內存泄漏或者非法內存訪問,輕則應用或系統運行速度變慢,重則死機。
為了在這些平臺上開發更穩定的原生應用程序,現在的一種管理應用內存的方法是運行時接管MMU(Memory Management Unit,內存管理單元)。運行時接管MMU的做法是,應用自身建立一個內存管理模塊,接管系統的MMU,常規的做法是在申請的內存前后加入保護字節,并記錄申請內存的操作,放置在申請內存前后的保護字節,一般是固定長度并會填充特定的字節內容,比如說填充0x0D,這樣,如果在釋放該內存時,發現保護字節不是0x0D,就可以認為存在非法的內存寫操作。
但對于現有的在申請的內存前后加入保護字節的方法,只能檢測到內存非法寫的情況,而不能檢測出內存非法讀,而這種非法讀異常往往是代碼邏輯不正確造成,而且一般會是低效率的代碼。其次保護字節完整只是無內存非法寫的必要非充分條件,對于非法寫操作不在保護字節區,以及非法寫入的字節與保護字節一致的這兩種情況,是無法檢測出來的。
發明內容
為了解決現有技術中應用內存的管理不足的問題,本發明實施例提供了一種應用內存管理方法和裝置。所述技術方案如下:
一方面,提供了一種應用內存管理方法,所述方法包括:
接收到應用的申請內存請求后,查詢操作內存分頁的內存申請接口;
根據所述操作內存分頁的內存申請接口提供的內存分頁的大小,為所述應用分配內存塊;
在為所述應用分配的內存塊的開始或結束位置加入保護頁,所述保護頁用于為調試器提供異常檢測。
所述根據所述操作內存分頁的內存申請接口提供的內存分頁的大小,為所述應用分配內存塊,包括:
為所述應用分配內存塊,并將所述分配的內存塊與所述操作內存分頁的內存申請接口提供的內存分頁的大小對齊,并在所述分配的內存塊的開始位置預留保護內存分頁字節;所述保護內存分頁字節的屬性為不可讀寫或是不為所述應用提交內存,
則所述在為所述應用分配的內存塊的開始或結束位置加入保護頁,包括:
在為所述應用分配的內存塊的結束位置加入保護頁;
或在所述分配的內存塊的結束位置預留保護內存分頁字節,
則所述在為所述應用分配的內存塊的開始或結束位置加入保護頁,包括:
在為所述應用分配的內存塊的開始位置加入保護頁。
所述在為所述應用分配的內存塊的開始或結束處加入保護頁之后,還包括:
當所述應用在讀寫所述保護頁時,操作系統產生異常信息,所述調試器捕捉到所述異常信息后,中斷所述應用的進行,使分配給所述應用的內存塊被掛起。
所述方法還包括:
當所述應用釋放所述分配的內存塊后,在其它應用申請內存時,從所述應用釋放的內存塊的最大地址之后,為所述其它應用分配內存塊。
另一方面,還提供了一種應用內存管理裝置,所述裝置包括:
接管模塊,用于接收到應用的申請內存請求后,查詢操作內存分頁的內存申請接口;
分配模塊,用于根據所述操作內存分頁的內存申請接口提供的內存分頁的大小,為所述應用分配內存塊;
添加模塊,用于在為所述應用分配的內存塊的開始或結束位置加入保護頁,所述保護頁用于為調試器提供異常檢測。
所述分配模塊具體用于:
為所述應用分配內存塊,并將所述分配的內存塊與所述操作內存分頁的內存申請接口提供的內存分頁的大小對齊,并在所述分配的內存塊的開始位置預留保護內存分頁字節;所述保護內存分頁字節的屬性為不可讀寫或是不為所述應用提交內存,
則所述添加模塊具體用于包括:
在為所述應用分配的內存塊的結束位置加入保護頁;
或在所述分配的內存塊的結束位置預留保護內存分頁字節,
則所述添加模塊具體用于:
在為所述應用分配的內存塊的開始位置加入保護頁。
所述分配模塊還用于:
當所述應用釋放所述分配的內存塊后,在其它應用申請內存時,從所述應用釋放的內存塊的最大地址之后,為所述其它應用分配內存塊。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于騰訊科技(深圳)有限公司,未經騰訊科技(深圳)有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201110418187.3/2.html,轉載請聲明來源鉆瓜專利網。
- 上一篇:一種CMOS管的摻雜方法
- 下一篇:一種牛泡沫病毒感染性克隆的構建及其應用





