本发明专利技术公开了一种应用内存管理方法和装置,属于通信技术领域。所述方法包括:接收到应用的申请内存请求后,查询操作内存分页的内存申请接口;根据所述操作内存分页的内存申请接口提供的内存分页的大小,为所述应用分配内存块;在为所述应用分配的内存块的开始位置或结束位置加入保护页,所述保护页用于为调试器提供异常检测。本发明专利技术通过直接接管内存分页的内存申请接口,根据内存分页的大小为应用分配内存块,并在内存块的一端加入保护页,可以对内存非法读写都进行检测,同时其检测的覆盖率更高。
【技术实现步骤摘要】
本专利技术涉及通信
,特别涉及一种应用内存管理方法和装置。
技术介绍
开发低端手机平台上的原生应用程序(手机Java应用不属于)一般是使用C语言或者C++语言,并且平台提供的内存管理机制比较原始,需要应用开发者具有良好的素质,否则很容易造成内存泄漏或者非法内存访问,轻则应用或系统运行速度变慢,重则死机。为了在这些平台上开发更稳定的原生应用程序,现在的一种管理应用内存的方法是运行时接管MMU (Memory Management Unit,内存管理单元)。运行时接管MMU的做法是,应用自身建立一个内存管理模块,接管系统的MMU,常规的做法是在申请的内存前后加入保护字节,并记录申请内存的操作,放置在申请内存前后的保护字节,一般是固定长度并会填充特定的字节内容,比如说填充OxOD,这样,如果在释放该内存时,发现保护字节不是OxOD,就可以认为存在非法的内存写操作。但对于现有的在申请的内存前后加入保护字节的方法,只能检测到内存非法写的情况,而不能检测出内存非法读,而这种非法读异常往往是代码逻辑不正确造成,而且一般会是低效率的代码。其次保护字节完整只是无内存非法写的必要非充分条件,对于非法写操作不在保护字节区,以及非法写入的字节与保护字节一致的这两种情况,是无法检测出来的。
技术实现思路
为了解决现有技术中应用内存的管理不足的问题,本专利技术实施例提供了一种应用内存管理方法和装置。所述技术方案如下:一方面,提供了一种应用内存管理方法,所述方法包括:接收到应用的申请内存请求后,查询操作内存分页的内存申请接口 ;根据所述操作内存分页的内存申请接口提供的内存分页的大小,为所述应用分配内存块;在为所述应用分配的内存块的开始或结束位置加入保护页,所述保护页用于为调试器提供异常检测。所述根据所述操作内存分页的内存申请接口提供的内存分页的大小,为所述应用分配内存块,包括:为所述应用分配内存块,并将所述分配的内存块与所述操作内存分页的内存申请接口提供的内存分页的大小对齐,并在所述分配的内存块的开始位置预留保护内存分页字节;所述保护内存分页字节的属性为不可读写或是不为所述应用提交内存,则所述在为所述应用分配的内存块的开始或结束位置加入保护页,包括:在为所述应用分配的内存块的结束位置加入保护页;或在所述分配的内存块的结束位置预留保护内存分页字节,则所述在为所述应用分配的内存块的开始或结束位置加入保护页,包括:在为所述应用分配的内存块的开始位置加入保护页。所述在为所述应用分配的内存块的开始或结束处加入保护页之后,还包括:当所述应用在读写所述保护页时,操作系统产生异常信息,所述调试器捕捉到所述异常信息后,中断所述应用的进行,使分配给所述应用的内存块被挂起。所述方法还包括:当所述应用释放所述分配的内存块后,在其它应用申请内存时,从所述应用释放的内存块的最大地址之后,为所述其它应用分配内存块。另一方面,还提供了一种应用内存管理装置,所述装置包括:接管模块,用于接收到应用的申请内存请求后,查询操作内存分页的内存申请接Π ;分配模块,用于根据所述操作内存分页的内存申请接口提供的内存分页的大小,为所述应用分配内存块;添加模块,用于在为所述应用分配的内存块的开始或结束位置加入保护页,所述保护页用于为调试器提供异常检测。所述分配模块具体用于:为所述应用分配内存块,并将所述分配的内存块与所述操作内存分页的内存申请接口提供的内存分页的大小对齐,并在所述分配的内存块的开始位置预留保护内存分页字节;所述保护内存分页字节的属性为不可读写或是不为所述应用提交内存,则所述添加模块具体用于包括:在为所述应用分配的内存块的结束位置加入保护页;或在所述分配的内存块的结束位置预留保护内存分页字节,则所述添加模块具体用于:在为所述应用分配的内存块的开始位置加入保护页。所述分配模块还用于:当所述应用释放所述分配的内存块后,在其它应用申请内存时,从所述应用释放的内存块的最大地址之后,为所述其它应用分配内存块。本专利技术实施例提供的技术方案带来的有益效果是:通过直接接管内存分页的内存申请接口,根据内存分页的大小为应用分配内存块,并在内存块的一端加入保护页,可以对内存非法读写都进行检测,同时其检测的覆盖率更高。附图说明为了更清楚地说明本专利技术实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1是本专利技术实施例1中提供的一种应用内存管理的方法的流程图;图2是本专利技术实施例2中提供的一种Windows操作系统的内存分层示意图;图3是本专利技术实施例2中提供的一种应用内存管理的方法的流程图4是本专利技术实施例2中提供的一种应用内存分配的示意图;图5是本专利技术实施例3中提供的一种应用内存管理装置的示意图。具体实施例方式为使本专利技术的目的、技术方案和优点更加清楚,下面将结合附图对本专利技术实施方式作进一步地详细描述。因为Feature Phone平台的内存模型往往是平面/线性内存模型,没有保护与隔离机制,非法的内存访问往往会造成死机,所以本专利技术实施例提供了一种管理应用内存的方法,使用该方法可以在模拟器环境下更方便有效进行内存异常检测。实施例1参见图1,本专利技术实施例提供了一种应用内存管理方法,包括:101:接收到应用的申请内存请求后,查询操作内存分页的内存申请接口 ;102:根据所述操作内存分页的内存申请接口提供的内存分页的大小,为所述应用分配内存块;103:在为所述应用分配的内存块的开始或结束位置加入保护页,所述保护页用于为调试器提供异常检测。本实施例中,所述根据所述操作内存分页的内存申请接口提供的内存分页的大小,为所述应用分配内存块,包括:为所述应用分配内存块,并将所述分配的内存块与所述操作内存分页的内存申请接口提供的内存分页的大小对齐,并在所述分配的内存块的开始位置预留保护内存分页字节;所述保护内存分页字节的属性为不可读写或是不为所述应用提交内存,则所述在为所述应用分配的内存块的开始或结束位置加入保护页,包括:在为所述应用分配的内存块的结束位置加入保护页;或在所述分配的内存块的结束位置预留保护内存分页字节,则则所述在为所述应用分配的内存块的开始或结束位置加入保护页,包括:在为所述应用分配的内存块的开始位置加入保护页。进一步地,所述在为所述应用分配的内存块的一端加入保护页之后,包括:在为所述应用分配的内存块的开始或结束处加入保护页之后,还包括:当所述应用在读写所述保护页时,操作系统产生异常信息,所述调试器捕捉到所述异常信息后,中断所述应用的进行,使分配给所述应用的内存块被挂起。本实施例中的方法还包括:当所述应用释放所述分配的内存块后,在其它应用申请内存时,从所述应用释放的内存块的最大地址之后,为所述其它应用分配内存块。本专利技术提供的方法实施例的有益效果是:通过直接接管内存分页的内存申请接口,根据内存分页的大小为应用分配内存块,并在内存块的一端加入保护页,可以对内存非法读写都进行检测,同时其检测的覆盖率更高。实施例2本专利技术实施例提供了一种应用内存管理方法,本专利技术实施例所提供的管理应用内存的方法适用于模拟器,本专利技术实施例提供的方法,只能在支持内存本文档来自技高网...

【技术保护点】
一种应用内存管理方法,其特征在于,所述方法包括:接收到应用的申请内存请求后,查询操作内存分页的内存申请接口;根据所述操作内存分页的内存申请接口提供的内存分页的大小,为所述应用分配内存块;在为所述应用分配的内存块的开始或结束位置加入保护页,所述保护页用于为调试器提供异常检测。
【技术特征摘要】
1.一种应用内存管理方法,其特征在于,所述方法包括: 接收到应用的申请内存请求后,查询操作内存分页的内存申请接口; 根据所述操作内存分页的内存申请接口提供的内存分页的大小,为所述应用分配内存块; 在为所述应用分配的内存块的开始或结束位置加入保护页,所述保护页用于为调试器提供异常检测。2.根据权利要求1所述的方法,其特征在于,所述根据所述操作内存分页的内存申请接口提供的内存分页的大小,为所述应用分配内存块,包括: 为所述应用分配内存块,并将所述分配的内存块与所述操作内存分页的内存申请接口提供的内存分页的大小对齐,并在所述分配的内存块的开始位置预留保护内存分页字节;所述保护内存分页字节的属性为不可读写或是不为所述应用提交内存, 则所述在为所述应用分配的内存块的开始或结束位置加入保护页,包括: 在为所述应用分配的内存块的结束位置加入保护页; 或在所述分配的内存块的结束位置预留保护内存分页字节, 则所述在为所述应用分配的内存块的开始或结束位置加入保护页,包括: 在为所述应用分配的内存块的开始位置加入保护页。3.根据权利要求1所述的方法,其特征在于,所述在为所述应用分配的内存块的开始或结束处加入保护页之 后,还包括: 当所述应用在读写所述保护页时,操作系统产生异常信息,所述调试器捕捉到所述异常信息后,中断所述应用的进行,使分配给所述应用的内存块被挂起。4.根据...
【专利技术属性】
技术研发人员:易壬俊,
申请(专利权)人:腾讯科技深圳有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。