[发明专利]内存泄漏点的定位方法、装置、系统及可读存储介质在审
申请号: | 201710823200.0 | 申请日: | 2017-09-13 |
公开(公告)号: | CN107608885A | 公开(公告)日: | 2018-01-19 |
发明(设计)人: | 安祥文 | 申请(专利权)人: | 郑州云海信息技术有限公司 |
主分类号: | G06F11/36 | 分类号: | G06F11/36 |
代理公司: | 北京集佳知识产权代理有限公司11227 | 代理人: | 罗满 |
地址: | 450018 河南省郑州市*** | 国省代码: | 河南;41 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 内存 泄漏 定位 方法 装置 系统 可读 存储 介质 | ||
1.一种内存泄漏点的定位方法,其特征在于,包括:
对调用内存分配器分配的内存的地址堆栈信息进行记录,将记录的所述内存的地址堆栈信息放入内存占用链表中;
通过所述内存占用链表获取所述内存的地址堆栈信息;
将所述地址堆栈信息与进程调用的动态库的基地址堆栈信息和尾地址堆栈信息进行比较,确定所述地址堆栈信息归属的动态库;
根据所述地址堆栈信息归属的动态库的基地址堆栈信息确定所述地址堆栈信息对应的具体位置信息。
2.如权利要求1所述的内存泄漏点的定位方法,其特征在于,所述对调用内存分配器分配的内存的地址堆栈信息进行记录,将记录的所述内存的地址堆栈信息放入内存占用链表中包括:
分配一个空闲块列表;
当调用内存分配器分配内存时,将分配的内存的地址堆栈信息赋值给所述空闲块列表的节点,将所述节点插入到所述内存占用链表中,并将所述节点从所述空闲块列表中移除;
当所述内存释放时,将所述内存对应的节点从所述内存占用链表中取出,并将所述节点归还至所述空闲块列表中。
3.如权利要求2所述的内存泄漏点的定位方法,其特征在于,所述将所述节点插入到所述内存占用链表中包括:
将所述节点中存放的所述内存地址堆栈信息按照预定的算法映射成短数据;
将存放有所述短数据的所述节点插入到所述内存占用链表中。
4.如权利要求3所述的内存泄漏点的定位方法,其特征在于,所述进程调用的动态库的基地址堆栈信息和尾地址堆栈信息的调用方法包括:
获取进程所调用的动态库的映射关系,得到所述动态库的基地址堆栈信息和尾地址堆栈信息。
5.如权利要求4所述的内存泄漏点的定位方法,其特征在于,还包括:
对所述内存占用链表中的内存的地址堆栈信息记录信息按照出现次数进行统计;
获取所述内存占用链表中地址堆栈信息记录信息出现次数大于预设阈值的短数据。
6.如权利要求1至5任一项所述的内存泄漏点的定位方法,其特征在于,所述根据所述地址堆栈信息与其所归属的动态库的基地址堆栈信息确定所述地址堆栈信息对应的具体位置信息包括:
将所述地址堆栈信息减去其所归属的动态库的基地址堆栈信息,得到偏移地址堆栈信息;
根据所述基地址堆栈信息和每行代码占用的内存大小,与所述偏移地址堆栈信息进行比较,得到所述地址堆栈信息对应的具体位置信息。
7.一种内存泄漏点的定位装置,其特征在于,包括:
记录单元,用于对调用内存分配器分配的内存的地址堆栈信息进行记录,将记录的所述内存的地址堆栈信息放入内存占用链表中;
地址堆栈信息获取单元,用于通过所述内存占用链表获取所述内存的地址堆栈信息;
比较单元,用于将所述地址堆栈信息与进程调用的动态库的基地址堆栈信息和尾地址堆栈信息进行比较,确定所述地址堆栈信息归属的动态库;
位置信息确定单元,用于根据所述地址堆栈信息归属的动态库的基地址堆栈信息确定所述地址堆栈信息对应的具体位置信息。
8.一种内存泄漏点的定位系统,其特征在于,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如权利要求1至6任一项所述内存泄漏点的定位方法的步骤。
9.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至6任一项所述内存泄漏点的定位方法的步骤。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于郑州云海信息技术有限公司,未经郑州云海信息技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201710823200.0/1.html,转载请声明来源钻瓜专利网。