[发明专利]一种内存泄露的定位方法及系统在审
| 申请号: | 201710060920.6 | 申请日: | 2017-01-25 |
| 公开(公告)号: | CN106844216A | 公开(公告)日: | 2017-06-13 |
| 发明(设计)人: | 蒋玉萍 | 申请(专利权)人: | 深圳怡化电脑股份有限公司;深圳市怡化时代科技有限公司;深圳市怡化金融智能研究院 |
| 主分类号: | G06F11/36 | 分类号: | G06F11/36 |
| 代理公司: | 北京品源专利代理有限公司11332 | 代理人: | 孟金喆,胡彬 |
| 地址: | 518038 广东省深圳市南山*** | 国省代码: | 广东;44 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 一种 内存 泄露 定位 方法 系统 | ||
技术领域
本发明实施例涉及测试技术领域,尤其涉及一种内存泄露的定位方法及系统。
背景技术
在计算机科学中,内存泄漏是指由于疏忽或错误造成程序未能释放已经不再使用的内存的情况。内存泄漏并非指内存在物理上的消失,而是应用程序分配某段内存后,由于程序设计错误,失去了对该段内存的控制,导致该段内存不能被再次使用,因而造成了内存的浪费。
一个小的内存泄露可能不需要太注意,但是若程序泄露大块内存,或者渐增式的泄露内存会引起下述现象:先是系统性能降低,然后引起复杂的内存耗尽错误;最坏的情况是,一个内存泄露程序可能用完了非常多的内存而引起其他程序出错,而用户不能知道错误到底来自哪里。另外,一个看上去危害不大的内存泄露,可能是另一个问题的先兆。因此,要尽量避免内存泄露现象的发生,要避免内存泄露,除了要求编程人员具有良好的编码习惯和编码规范之外,关键还要从程序代码上入手,对内存泄露进行高效、可靠的定位检测,一旦发现程序异常,方便编程人员对程序进行必要的修改。
发明内容
本发明实施例提供了一种内存泄露的定位方法及系统,以实现快速定位内存泄露的源代码位置。
第一方面,本发明实施例提供了一种内存泄露的定位方法,该方法包括:
在监测到申请内存操作时,获取针对申请而分配内存的身份信息;
将所述身份信息保存到预设的循环链表节点中,生成节点信息;
在监测到释放内存操作时,根据释放内存的身份信息遍历所述循环链表,查找与所述释放内存的身份信息相匹配的节点信息,并将查找到的节点信息从所述循环链表中删除;
根据所述循环链表中剩余的节点信息定位泄露的内存。
进一步地,所述在监测到申请内存操作时,获取针对申请而分配内存的身份信息,包括:
在监测到调用内存申请函数来申请内存时,确定存在申请内存操作;
通过重载内存申请函数获取针对申请所分配内存的身份信息。
进一步地,将所述身份信息保存到预设的循环链表节点中,生成节点信息之前,还包括:
检测所述预设的循环链表是否已经存在,若是则执行将所述身份信息保存到预设的循环链表节点中,生成节点信息的操作,否则,创建预设的循环链表以及循环链表节点。
进一步地,所述在监测到释放内存操作时,根据释放内存的身份信息遍历所述循环链表,查找与所述释放内存的身份信息相匹配的节点信息,并将查找到的节点信息从所述循环链表中删除,包括:
在监测到调用内存释放函数来释放内存时,确定存在释放内存操作;
通过重载内存释放函数获取释放内存的身份信息;
根据所述释放内存的身份信息遍历所述循环链表,查找与所述释放内存的身份信息相匹配的节点信息,并将查找到的节点信息从所述循环链表中删除。
进一步地,所述根据所述循环链表中剩余的节点信息定位泄露的内存,包括:
当接收到设定触发指令时,将所述循环链表中剩余的节点信息以文件的形式记录到文件系统中,以供查询泄露的内存。
进一步地,所述身份信息包括:调用内存申请函数的文件名、调用内存申请函数的函数名、申请成功的内存地址、内存申请时间和源代码行位置信息中的至少一项。
第二方面,本发明实施例还提供了一种内存泄露的定位系统,该系统包括:
获取模块,用于在监测到申请内存操作时,获取针对申请而分配内存的身份信息;
保存模块,用于将所述身份信息保存到预设的循环链表节点中,生成节点信息;
删除模块,用于在监测到释放内存操作时,根据释放内存的身份信息遍历所述循环链表,查找与所述释放内存的身份信息相匹配的节点信息,并将查找到的节点信息从所述循环链表中删除;
定位模块,用于根据所述循环链表中剩余的节点信息定位泄露的内存。
进一步地,所述获取模块包括:申请内存操作确定单元,用于在监测到调用内存申请函数来申请内存时,确定存在申请内存操作;第一获取单元,用于通过重载内存申请函数获取针对申请所分配内存的身份信息;
所述删除模块包括:释放内存操作确定单元,用于在监测到调用内存释放函数来释放内存时,确定存在释放内存操作;第二获取单元,用于通过重载内存释放函数获取释放内存的身份信息;删除单元,用于根据所述释放内存的身份信息遍历所述循环链表,查找与所述释放内存的身份信息相匹配的节点信息,并将查找到的节点信息从所述循环链表中删除;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于深圳怡化电脑股份有限公司;深圳市怡化时代科技有限公司;深圳市怡化金融智能研究院,未经深圳怡化电脑股份有限公司;深圳市怡化时代科技有限公司;深圳市怡化金融智能研究院许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201710060920.6/2.html,转载请声明来源钻瓜专利网。





