[发明专利]一种内存泄漏检测方法、装置及设备在审
申请号: | 201811447482.X | 申请日: | 2018-11-29 |
公开(公告)号: | CN111240954A | 公开(公告)日: | 2020-06-05 |
发明(设计)人: | 雷建忠;张嘉庆;张斌;潘健 | 申请(专利权)人: | 华为技术有限公司 |
主分类号: | G06F11/36 | 分类号: | G06F11/36 |
代理公司: | 深圳市深佳知识产权代理事务所(普通合伙) 44285 | 代理人: | 王仲凯 |
地址: | 518129 广东*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 内存 泄漏 检测 方法 装置 设备 | ||
1.一种内存泄漏检测方法,其特征在于,所述方法包括:
设备对应用程序占用的内存的总大小进行M次采样,得到N个样本,并将所述N个样本按照采样顺序进行排列,其中所述M大于或等于N,所述N为大于1的正整数;
所述设备根据所述N个样本中相邻两个样本之间的差值,确定所述内存的总大小的增长次数,所述相邻两个样本之间的差值是指所述相邻两个样本中采样时间较晚的样本与采样时间较早的样本之间的差值;
当所述增长次数大于或等于第一阈值时,所述设备确认所述内存发生泄漏。
2.根据权利要求1所述的方法,其特征在于,所述相邻两个样本包括第一样本和第二样本,所述第一样本为采样时间较晚的样本,第二样本为采样时间较早的样本;
所述设备根据所述N个样本中相邻两个样本之间的差值,确定所述内存的大小的增长次数包括:
当所述第一样本和第二样本之间的差值大于或等于第二阈值时,所述设备确认所述内存的大小增长一次。
3.根据权利要求1或2所述的方法,其特征在于,所述方法还包括:
所述设备获取所述应用程序的内存申请请求,并根据所述内存申请请求中携带的待申请内存的内存大小累计所述应用程序占用的内存的总大小。
4.根据权利要求3所述的方法,其特征在于,所述内存申请请求中还携带有句柄标识,所述根据所述内存申请请求中携带的待申请内存的内存大小累计所述应用程序占用的内存的总大小包括:
根据所述内存申请请求中携带的句柄标识和待申请内存的内存大小,累计与所述句柄标识对应的所述应用程序占用的内存的总大小。
5.根据权利要求3或4所述的方法,其特征在于,所述方法还包括:
所述设备获取所述应用程序的内存释放请求,根据所述内存释放请求中携带的待释放内存的地址确认所述待释放内存的大小;
所述设备根据所述待释放内存的大小更新所述应用程序占用的内存的总大小。
6.根据权利要求5所述的方法,其特征在于,所述内存释放请求中还携带有句柄标识,所述根据所述待释放内存的大小更新所述应用程序占用的内存的总大小包括:
根据所述内存释放请求中携带的句柄标识和所述待释放内存的大小,更新所述应用程序占用的内存总大小。
7.根据权利要求1-6任一项所述的方法,其特征在于,所述设备对应用程序占用的内存的总大小进行M次采样,得到N个样本包括:
所述设备设置N个数组,对应用程序占用的内存的总大小进行采样,每获取到一个样本,就将该样本存储在对应的数组中,其中,当总采样次数M等于N时,按照采样顺序将样本依次存入这N个数组中;当总采样次数M大于N时,将第M个样本存入编号为M%N的数组,并覆盖该数组原来的样本,其中M%N的含义是M对N求余。
8.根据权利要求7所述的方法,其特征在于,所述根据所述N个样本中相邻两个样本之间的差值,确定所述内存的总大小的增长次数包括:
令MIC=0,i=0;
计算SARR[(FSI+i+1)%N]与SARR[(FSI+i)%N]之差,根据SARR[(FSI+i+1)%N]与SARR[(FSI+i)%N]之差判断是否内存总大小是否增长,若是,则令MIC=MIC+1;
判断i是否小于N-1,若是,则令i=i+1,返回执行计算SARR[(FSI+i+1)%N]与SARR[(FSI+i)%N]之差的步骤;
其中,MIC为内存增长次数,SARR[(FSI+i+1)%N]为编号为[(FSI+i+1)%N]对应的样本,FSI为第一个样本的编号,(FSI+i+1)%N为FSI+i+1对N取余;
当所述增长次数大于或等于第一阈值时,确认所述内存发生泄漏包括:
当所述MIC大于或等于第一阈值时,确认所述内存发生泄漏。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于华为技术有限公司,未经华为技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201811447482.X/1.html,转载请声明来源钻瓜专利网。