[发明专利]应用内存管理方法和装置有效
申请号: | 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.vipzhuanli.com/pat/books/201110418187.3/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种CMOS管的掺杂方法
- 下一篇:一种牛泡沫病毒感染性克隆的构建及其应用