[发明专利]判断资源泄漏、预测资源使用情况的方法及装置有效
申请号: | 201310190659.3 | 申请日: | 2013-05-21 |
公开(公告)号: | CN104182332B | 公开(公告)日: | 2017-09-29 |
发明(设计)人: | 李静辉;龚学文;袁健清 | 申请(专利权)人: | 华为技术有限公司 |
主分类号: | G06F11/36 | 分类号: | G06F11/36 |
代理公司: | 北京同达信恒知识产权代理有限公司11291 | 代理人: | 张恺宁 |
地址: | 518129 广东*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 判断 资源 泄漏 预测 使用 情况 方法 装置 | ||
技术领域
本发明涉及计算机应用领域,尤其涉及一种判断程序运行资源泄漏的方法及装置、一种预测程序运行资源使用情况的方法及装置。
背景技术
程序运行资源,如内存、文件句柄、信号量、数据库连接池、线程池等是程序运行时需要的关键资源。在运行过程中,程序在需要使用程序运行资源时提出申请,在使用结束后及时释放所占用的程序运行资源;若没有及时释放已占用的程序运行资源,就会出现程序运行资源泄漏的问题。下面以内存泄漏为例,对程序运行资源泄漏的问题作具体说明。
内存泄漏是指由于设计或编码问题等造成程序没有及时释放已经不再使用的内存,导致系统的可用内存越来越少,随着程序长时间运行,内存泄漏越来越严重,最终可能导致系统由于内存不足而使业务受损或中断。内存泄漏是程序运行过程中容易出现而又难以避免的问题,随着软件规模越来越大、复杂度越来越高,系统中出现内存泄漏的概率也越来越高。
针对内存泄漏的问题,现有检测内存泄漏的方法之一是采用静态分析的方法,这种方法不需要运行程序,而是通过人工或自动化工具分析程序代码以检查代码中内存分配和释放的匹配情况。对于内存分配和释放的对应关系比较简单的情况,静态分析方法通常可以有效检测出潜在的内存泄漏,但对于内存分配和释放的对应关系比较复杂的情况,如在一个函数中分配内存,在另外一个甚至多个函数中释放对应的内存等,静态分析方法通常容易出现误报和漏报。
现有检测内存泄漏的方法之二是在程序运行过程中动态监控内存的分配和释放,并结合对内存生命周期的判断来检测内存泄漏;一方面,该方法需要对程序中所有相关的内存分配和释放进行管理,并需要准确判断内存的生命周期,导致实施复杂、对系统性能消耗较大;另一方面,为了实现对内存分配函数和释放函数的接管,需要根据具体的应用程序作相应的代码修改,且对内存生命周期的判断也依赖于具体的应用场景,因此,该方法与具体被检测的目标系统耦合紧密,通用性较差。
另外,现有技术只能检测是否存在内存泄漏,而对将来的内存使用情况,如多长时间后会出现内存耗尽或多长时间后内存使用量将达到设定阈值等,不能提供预测。
发明内容
本发明实施例提供一种判断程序运行资源泄漏的方法及装置,用以解决现有的检测程序运行资源泄漏的方法中,容易出现误报和漏报、对系统性能消耗大、通用性较差的问题。
第一方面,提供一种判断程序运行资源泄漏的方法,包括:
在每个程序运行资源使用周期内采集至少一次程序运行资源使用量;其中,在每个程序运行资源使用周期内采集程序运行资源使用量的次数相同;所述程序运行资源使用周期为根据程序运行资源使用量的周期性规律设定的周期;
针对任意两个程序运行资源使用周期,确定在后周期内每次采集的程序运行资源使用量,与在前周期内对应次采集的程序运行资源使用量的差值,其中在后周期内每次采集的时间与在后周期的起始时间的时间差,和在前周期内对应次采集的时间与在前周期的起始时间的时间差在一个预设范围内;
根据在确定的各差值中大于0的差值总数与小于0的差值总数之差,判断是否存在程序运行资源泄漏。
结合第一方面,在第一种可能的实现方式中,确定在后周期内每次采集的程序运行资源使用量,与在前周期内对应次采集的程序运行资源使用量的差值之前,还包括:
确定采集的程序运行资源使用量总周期数或总次数不小于设定的阈值,和/或当前程序运行资源占用率不小于设定的阈值,和/或当前中央处理器CPU占用率小于设定的阈值,和/或当前时间在设定的时间范围内。
结合第一方面或者第一方面的第一种可能的实现方式,在第二种可能的实现方式中,根据所述大于0的差值总数与小于0的差值总数之差,判断是否存在程序运行资源泄漏,包括:
若所述大于0的差值总数与小于0的差值总数之差大于设定的阈值,则确定存在程序运行资源泄漏。
结合第一方面或者第一方面的第一种可能的实现方式,在第三种可能的实现方式中,根据所述大于0的差值总数与小于0的差值总数之差,判断是否存在程序运行资源泄漏,包括:
确定所述大于0的差值总数与小于0的差值总数之差的统计量Z;
若Z大于设定的阈值,则确定存在程序运行资源泄漏。
结合第一方面的第三种可能的实现方式,在第四种可能的实现方式中,根据以下公式确定所述大于0的差值总数与小于0的差值总数之差S′的统计量Z:
若n≥10,则其中,n为程序运行资源使用周期的个数;
否则,
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于华为技术有限公司,未经华为技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201310190659.3/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种分布式数据驱动交点队列型片上通信结构
- 下一篇:转换装置