[发明专利]一种嵌入式系统中内存泄漏诊断处理的方法和装置在审
申请号: | 201610015205.6 | 申请日: | 2016-01-11 |
公开(公告)号: | CN105700968A | 公开(公告)日: | 2016-06-22 |
发明(设计)人: | 叶德焰;陈从华;任赋;许宁;许振坪 | 申请(专利权)人: | 厦门雅迅网络股份有限公司 |
主分类号: | G06F11/07 | 分类号: | G06F11/07 |
代理公司: | 厦门市精诚新创知识产权代理有限公司 35218 | 代理人: | 何家富 |
地址: | 361000 福建*** | 国省代码: | 福建;35 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 嵌入式 系统 内存 泄漏 诊断 处理 方法 装置 | ||
技术领域
本发明属于计算机技术应用领域,具体涉及一种嵌入式系统中内存泄漏诊 断处理的方法和装置。
背景技术
嵌入式系统是一种资源比较受限的系统,因此如何高效复用有限的系统资 源,特别是如何利用好有限的内存资源,发挥最大运行效率,成为嵌入式系统 性能的关键问题。
嵌入式系统中,大多数方案采用动态内存管理方式,而所谓的动态内存也 就是及时申请内存,用完及时释放内存,而在这个过程中经常出现程序bug或 者人员疏忽,导致内存无法释放,出现内存泄漏问题,随着系统长时间运行, 内存越用越少,最后无内存可用,程序最终会因为没有足够内存空间而无法正 常运行,导致系统奔溃死机,后果非常严重。因此,如何自动有效地准确检测 内存泄漏并合理释放内存是一个亟待解决的棘手难题。
以往,传统的内存泄漏检测及处理方法,一是在调试或者测试阶段,使用 自动测试软件通过对内存进行插桩,内存使用情况被记录到自动测试软件的数 据库中,事后人为分析判断是否存在内存泄漏,并通过人工检查方式对内存泄 漏位置进行定位;二是判断应用程序所占用的内存时间是否超过预先设定的内 存生命周期,当超过生命周期时,判断为发生内存泄漏,并简单粗暴地强制释 放内存。参考专利文献CN101414272B公开了一种内存泄漏的检测方法和装置, 通过被检测内存的当前被占用时间是否超过预先为被检测内存设置的生命周 期,以及被检测内存是否正在被申请被检测内存的业务进程所使用,判断被测 内存是否发生泄漏。
传统的内存泄漏检测及处理方法过于简单,比较机械,实时性不够,处理 方法不够灵活恰当,在实际应用中效果差强人意。且存在很多缺点:一是采用 插桩方式,只能在调试或者测试阶段进行,无法在系统正式部署运行期间进行 内存泄漏检测,实时性不够;二是采用插桩方式,需要人为分析判断是否有内 存泄漏,并人为检查定位内存泄漏位置,大量内存申请和释放过程,导致排查 工作量大,难度高,效率低;三是通过内存的生命周期简单判断为内存泄漏, 存在误判情况;四是简单粗暴地强制释放内存,可能导致关键功能失效异常, 影响用户正常使用。
发明内容
针对传统的内存泄漏检测处理方法存在的不足之处,本发明提出了一种嵌 入式系统中内存泄漏诊断处理的方法和装置。通过内存管理模块与应用程序的 动态协调,自动有效地准确诊断内存泄漏情况,灵活合理地分配和释放内存, 避免简单粗暴地强制释放内存,导致正在运行的功能失效异常。本发明实现简 单,检测准确,处理方法动态灵活,具有实时性高,实用性强,准确可靠,动 态灵活,具有良好的应用价值和经济效益。
本发明采用如下技术方案:
一种嵌入式系统中内存泄漏诊断处理的方法,该方法包括以下步骤,
S1,将内存划分成大小不同的内存块,每个内存块等分成多个子内存,内 存块i的子内存大小定义为Si,i=1,2,3,…,M,且S1<S2<…<SM,将应用程序申 请在用的子内存管理串接起来构成申请链表;
S2,根据应用程序申请内存的大小S,申请一个大于等于S的子内存Si,并 将该子内存节点添加到申请链表中;
S3,应用程序用完内存后,释放该子内存,删除申请表链中的该子内存节 点;
S4,以固定周期扫描申请链表上的所有子内存节点,当一个子内存占用时 间超过内存生命周期时,通知应用程序进行处理。
进一步的,步骤S2中应用程序初步申请内存的步骤包括,
S210,从子内存最小的内存块i=1开始检索,依次从小到大检索内存块;
S211,判断内存块中剩余内存个数Pi是否大于零,若是则跳转到步骤S212, 若否则i=i+1,判断i是否大于M,如果i大于M,申请内存失败,如果i不大 于M,则转到步骤S211;
S212,判断应用申请内存的大小S是否小于等于子内存大小Si,若是则申 请内存成功,若否则i=i+1,判断i是否大于M,如果i大于M,申请内存失败, 如果i不大于M,则转到步骤S211。
更进一步的,步骤S211或步骤S212中的申请内存失败进入深度申请内存 步骤,
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于厦门雅迅网络股份有限公司,未经厦门雅迅网络股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201610015205.6/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种电壁炉的火焰模拟装置
- 下一篇:用于处理分布式作业的方法和系统