[发明专利]内存泄漏检查系统及方法有效
申请号: | 201510704993.5 | 申请日: | 2015-10-27 |
公开(公告)号: | CN105260313B | 公开(公告)日: | 2019-07-05 |
发明(设计)人: | 易开东 | 申请(专利权)人: | 上海斐讯数据通信技术有限公司 |
主分类号: | G06F11/36 | 分类号: | G06F11/36 |
代理公司: | 上海硕力知识产权代理事务所(普通合伙) 31251 | 代理人: | 郭桂峰 |
地址: | 201616 *** | 国省代码: | 上海;31 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | 本发明公开了一种内存泄漏检查系统及方法,包括内存数据采集模块、数据传输模块、内存泄漏分析模块和显示模块;所述内存数据采集模块采集的数据通过所述数据传输模块传送至所述内存泄漏分析模块;所述内存数据采集模块采集的数据包括内存分配数据和内存释放数据;所述内存泄漏分析模块适于根据所述内存数据采集模块采集的数据检查内存块是否发生泄漏,内存泄漏的检查结果传送至所述显示模块进行显示。本发明的内存泄漏分析模块运行于PC机上,占有目标产品的内存少;泄漏检查方法能在客户现场使用,简单、直观、高效。 | ||
搜索关键词: | 内存 泄漏 检查 系统 方法 | ||
【主权项】:
1.内存泄漏检查系统,其特征在于,包括内存数据采集模块、数据传输模块、内存泄漏分析模块和显示模块;所述内存数据采集模块运行于目标产品中,采集的数据通过所述数据传输模块传送至所述内存泄漏分析模块;所述内存数据采集模块采集的数据包括内存分配数据和内存释放数据;所述内存数据采集模块包括内存分配数据采集单元和内存释放数据采集单元:所述内存分配数据采集单元用于,在向目标应用程序分配内存前,记录所述目标应用程序所申请内存的内存块起始地址、内存块大小、内存块分配时间及调用内存分配函数的调用函数在所述目标应用程序中的位置;所述内存释放数据采集单元用于,在目标应用程序释放内存前,记录所述目标应用程序将要释放内存的内存块起始地址、内存块大小、内存块释放时间及调用内存释放函数的调用函数在所述目标应用程序中的位置;通过一个此自定义的模块提供的函数分配或者释放内存块,使用标准的内存分配malloc函数和内存释放free函数前,记录应用程序申请或者释放内存块的信息,包括内存块的起始地址、内存块的大小、内存块的分配时间或者释放时间,还记录辅助信息,包括分配或者释放函数调用在应用程序源代码中的位置,包括函数所在的文件、调用函数的名字、调用函数所在的行号;在目标应用程序内存块申请的时候使用内存管理数据采集模块提供的内存分配和释放接口记录结构进行;所述数据传输模块包括缓存,所述内存数据采集模块采集的内存分配数据和内存释放数据均存储在所述缓存中;所述内存泄漏分析模块,所述内存泄漏分析模块运行于PC机中,适于预设内存块最大占用时间MAX_TIME,并适于根据所述内存数据采集模块采集的数据检查内存块是否发生泄漏,若同一地址的内存分配数据对应有内存释放数据,则所述地址的内存块未发生泄漏;若同一地址的内存分配数据无对应的内存释放数据,当所述地址的内存块占用时间小于所述最大占用时间MAX_TIME时,则所述地址的内存块未发生泄漏,当所述地址的内存块占用时间大于所述最大占用时间MAX_TIME时,则所述地址的内存块发生泄漏,具体过程如下:(1)在目标应用程序申请分配内存前,内存数据采集模块采集内存分配数据;在目标应用程序释放内存前,内存数据采集模块采集内存释放数据;(2)将所述内存数据采集模块采集的数据传送至内存泄漏分析模块,所述数据以记录R的形式保存至所述内存泄漏分析模块的哈希表中;(3)判断记录R的类型,若R的记录类型为“1”,则继续到下一步;若R的记录类型为“2”,则转至步骤(5);(4)以R的start为关键字将内存分配数据以记录R1保存至哈希表T1;转至步骤(6);(5)以R的start为关键字将内存释放数据以记录R2保存至哈希表T2;(6)所述内存泄漏分析模块设置内存块最大占用时间MAX_TIME;(7)从哈希表T1中获取内存分配记录R1;(8)以R1的start为关键字从哈希表T2中获取内存释放记录R2;(9)判断R2是否为有效记录,若R2为有效记录,则继续到下一步;若R2为无效记录,则转至步骤(11);(10)R1记录的内存块未发生内存泄漏,删除T1中的R1和T2中的R2;(11)判断R1记录的内存块的分配时间是否大于MAX_TIME,若R1记录的内存块的分配时间大于MAX_TIME,则继续到下一步;若R1记录的内存块的分配时间小于MAX_TIME,则转至步骤(10);(12)R1记录的内存块发生内存泄漏,实时显示该内存泄漏结果;其中,所述内存泄漏分析模块设置的内存块最大占用时间MAX_TIME≥5分钟;所述记录R1中的数据包括目标应用程序所申请内存的内存块起始地址、内存块大小、内存块分配时间及调用内存分配函数的调用函数在所述目标应用程序中的位置,所述调用内存分配函数的调用函数在所述目标应用程序中的位置数据包括所述调用函数所在的文件、调用函数的名字和调用函数所在的行号;所述记录R2中的数据包括目标应用程序将要释放内存的内存块起始地址、内存块大小、内存块释放时间及调用内存释放函数的调用函数在所述目标应用程序中的位置;所述调用内存释放函数的调用函数在所述目标应用程序中的位置数据包括所述调用函数所在的文件、调用函数的名字和调用函数所在的行号;内存泄漏的检查结果传送至所述显示模块进行显示。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于上海斐讯数据通信技术有限公司,未经上海斐讯数据通信技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/patent/201510704993.5/,转载请声明来源钻瓜专利网。
- 上一篇:一种改进型内存域划分方法
- 下一篇:监控移动终端用户使用行为的方法