判断资源泄漏、预测资源使用情况的方法及装置制造方法及图纸

技术编号:10708135 阅读:129 留言:0更新日期:2014-12-03 14:24
本发明专利技术涉及计算机应用领域,尤其涉及一种判断程序运行资源泄漏的方法及装置,用以解决现有的检测程序运行资源泄漏的方法中,容易出现误报和漏报、通用性较差的问题;还涉及一种预测程序运行资源使用情况的方法及装置,用以解决现有技术不能预测在程序运行过程中,将来程序运行资源使用情况的问题;预测程序运行资源使用情况的方法包括:在每个程序运行资源使用周期内采集至少一次程序运行资源使用量;将采集的程序运行资源使用量分解成不同种资源分量;针对每一种资源分量中包含的数据,确定该资源分量的预测函数;根据确定的每种资源分量的预测函数确定程序运行资源总体预测函数;基于确定的总体预测函数,预测程序运行资源的使用情况。

【技术实现步骤摘要】
判断资源泄漏、预测资源使用情况的方法及装置
本专利技术涉及计算机应用领域,尤其涉及一种判断程序运行资源泄漏的方法及装置、一种预测程序运行资源使用情况的方法及装置。
技术介绍
程序运行资源,如内存、文件句柄、信号量、数据库连接池、线程池等是程序运行时需要的关键资源。在运行过程中,程序在需要使用程序运行资源时提出申请,在使用结束后及时释放所占用的程序运行资源;若没有及时释放已占用的程序运行资源,就会出现程序运行资源泄漏的问题。下面以内存泄漏为例,对程序运行资源泄漏的问题作具体说明。内存泄漏是指由于设计或编码问题等造成程序没有及时释放已经不再使用的内存,导致系统的可用内存越来越少,随着程序长时间运行,内存泄漏越来越严重,最终可能导致系统由于内存不足而使业务受损或中断。内存泄漏是程序运行过程中容易出现而又难以避免的问题,随着软件规模越来越大、复杂度越来越高,系统中出现内存泄漏的概率也越来越高。针对内存泄漏的问题,现有检测内存泄漏的方法之一是采用静态分析的方法,这种方法不需要运行程序,而是通过人工或自动化工具分析程序代码以检查代码中内存分配和释放的匹配情况。对于内存分配和释放的对应关系比较简单的情况,静态分析方法通常可以有效检测出潜在的内存泄漏,但对于内存分配和释放的对应关系比较复杂的情况,如在一个函数中分配内存,在另外一个甚至多个函数中释放对应的内存等,静态分析方法通常容易出现误报和漏报。现有检测内存泄漏的方法之二是在程序运行过程中动态监控内存的分配和释放,并结合对内存生命周期的判断来检测内存泄漏;一方面,该方法需要对程序中所有相关的内存分配和释放进行管理,并需要准确判断内存的生命周期,导致实施复杂、对系统性能消耗较大;另一方面,为了实现对内存分配函数和释放函数的接管,需要根据具体的应用程序作相应的代码修改,且对内存生命周期的判断也依赖于具体的应用场景,因此,该方法与具体被检测的目标系统耦合紧密,通用性较差。另外,现有技术只能检测是否存在内存泄漏,而对将来的内存使用情况,如多长时间后会出现内存耗尽或多长时间后内存使用量将达到设定阈值等,不能提供预测。
技术实现思路
本专利技术实施例提供一种判断程序运行资源泄漏的方法及装置,用以解决现有的检测程序运行资源泄漏的方法中,容易出现误报和漏报、对系统性能消耗大、通用性较差的问题。第一方面,提供一种判断程序运行资源泄漏的方法,包括:在每个程序运行资源使用周期内采集至少一次程序运行资源使用量;其中,在每个程序运行资源使用周期内采集程序运行资源使用量的次数相同;所述程序运行资源使用周期为根据程序运行资源使用量的周期性规律设定的周期;针对任意两个程序运行资源使用周期,确定在后周期内每次采集的程序运行资源使用量,与在前周期内对应次采集的程序运行资源使用量的差值,其中在后周期内每次采集的时间与在后周期的起始时间的时间差,和在前周期内对应次采集的时间与在前周期的起始时间的时间差在一个预设范围内;根据在确定的各差值中大于0的差值总数与小于0的差值总数之差,判断是否存在程序运行资源泄漏。结合第一方面,在第一种可能的实现方式中,确定在后周期内每次采集的程序运行资源使用量,与在前周期内对应次采集的程序运行资源使用量的差值之前,还包括:确定采集的程序运行资源使用量总周期数或总次数不小于设定的阈值,和/或当前程序运行资源占用率不小于设定的阈值,和/或当前中央处理器CPU占用率小于设定的阈值,和/或当前时间在设定的时间范围内。结合第一方面或者第一方面的第一种可能的实现方式,在第二种可能的实现方式中,根据所述大于0的差值总数与小于0的差值总数之差,判断是否存在程序运行资源泄漏,包括:若所述大于0的差值总数与小于0的差值总数之差大于设定的阈值,则确定存在程序运行资源泄漏。结合第一方面或者第一方面的第一种可能的实现方式,在第三种可能的实现方式中,根据所述大于0的差值总数与小于0的差值总数之差,判断是否存在程序运行资源泄漏,包括:确定所述大于0的差值总数与小于0的差值总数之差的统计量Z;若Z大于设定的阈值,则确定存在程序运行资源泄漏。结合第一方面的第三种可能的实现方式,在第四种可能的实现方式中,根据以下公式确定所述大于0的差值总数与小于0的差值总数之差S′的统计量Z:若n≥10,则其中,n为程序运行资源使用周期的个数;否则,其中,Rik为在第k个程序运行资源使用周期内采集的第i次程序运行资源使用量;Ril为在第l个程序运行资源使用周期内采集的第i次程序运行资源使用量。第二方面,提供一种判断程序运行资源泄漏的装置,包括:采集模块,用于在每个程序运行资源使用周期内采集至少一次程序运行资源使用量,并将采集的程序运行资源使用量传输至确定模块,其中,在每个程序运行资源使用周期内采集程序运行资源使用量的次数相同;所述程序运行资源使用周期为根据程序运行资源使用量的周期性规律设定的周期;确定模块,用于接收所述采集模块每次采集的程序运行资源使用量,并针对任意两个程序运行资源使用周期,确定在后周期内每次采集的程序运行资源使用量,与在前周期内对应次采集的程序运行资源使用量的差值,并将确定的各差值传输至判断模块,其中在后周期内每次采集的时间与在后周期的起始时间的时间差,和在前周期内对应次采集的时间与在前周期的起始时间的时间差在一个预设范围内;判断模块,用于接收所述确定模块确定的各差值,并根据在确定的各差值中大于0的差值总数与小于0的差值总数之差,判断是否存在程序运行资源泄漏。第三方面,提供一种判断程序运行资源泄漏的装置,包括:处理器,用于在每个程序运行资源使用周期内采集至少一次程序运行资源使用量;其中,在每个程序运行资源使用周期内采集程序运行资源使用量的次数相同;针对任意两个程序运行资源使用周期,确定在后周期内每次采集的程序运行资源使用量,与在前周期内对应次采集的程序运行资源使用量的差值,其中在后周期内每次采集的时间与在后周期的起始时间的时间差,和在前周期内对应次采集的时间与在前周期的起始时间的时间差在一个预设范围内;根据在确定的各差值中大于0的差值总数与小于0的差值总数之差,判断是否存在程序运行资源泄漏;所述程序运行资源使用周期为根据程序运行资源使用量的周期性规律设定的周期;存储器,用于存储所述处理器每次采集的程序运行资源使用量及确定的在后周期内每次采集的程序运行资源使用量,与在前周期内对应次采集的程序运行资源使用量的差值。根据第一方面提供的判断程序运行资源泄漏的方法,第二方面或第三方面提供的判断程序运行资源泄漏的装置,采用本专利技术实施例可以实现对程序运行过程中不同程序运行资源使用周期的程序运行资源使用量的分析,从而可以得到程序运行中不同阶段的程序运行资源使用情况,较准确地判断出当前是否存在程序运行资源泄漏,比如内存泄漏,另外,本专利技术实施例仅需在程序运行中间隔性地采集程序运行资源使用量,在采集一定次数的程序运行资源使用量后,判断是否存在程序运行资源泄漏,对系统性能消耗较低,且适用于不同的目标系统,通用性较强。本专利技术实施例还提供一种预测程序运行资源使用情况的方法及装置,用以解决现有技术不能预测在程序运行过程中,将来程序运行资源使用情况的问题。第一方面,提供一种预测程序运行资源使用情况的方法,包括:在每个程序运行资源使用周期内采本文档来自技高网
...
判断资源泄漏、预测资源使用情况的方法及装置

【技术保护点】
一种判断程序运行资源泄漏的方法,其特征在于,包括:在每个程序运行资源使用周期内采集至少一次程序运行资源使用量;其中,在每个程序运行资源使用周期内采集程序运行资源使用量的次数相同;所述程序运行资源使用周期为根据程序运行资源使用量的周期性规律设定的周期;针对任意两个程序运行资源使用周期,确定在后周期内每次采集的程序运行资源使用量,与在前周期内对应次采集的程序运行资源使用量的差值,其中在后周期内每次采集的时间与在后周期的起始时间的时间差,和在前周期内对应次采集的时间与在前周期的起始时间的时间差在一个预设范围内;根据在确定的各差值中大于0的差值总数与小于0的差值总数之差,判断是否存在程序运行资源泄漏。

【技术特征摘要】
1.一种判断程序运行资源泄漏的方法,其特征在于,包括:在每个程序运行资源使用周期内采集至少一次程序运行资源使用量;其中,在每个程序运行资源使用周期内采集程序运行资源使用量的次数相同;所述程序运行资源使用周期为根据程序运行资源使用量的周期性规律设定的周期;针对任意两个程序运行资源使用周期,确定在后周期内每次采集的程序运行资源使用量,与在前周期内对应次采集的程序运行资源使用量的差值,其中在后周期内每次采集的时间与在后周期的起始时间的时间差,和在前周期内对应次采集的时间与在前周期的起始时间的时间差在一个预设范围内;根据在确定的各差值中大于0的差值总数与小于0的差值总数之差,判断是否存在程序运行资源泄漏;在确定在后周期内每次采集的程序运行资源使用量,与在前周期内对应次采集的程序运行资源使用量的差值之前,还包括:确定采集的程序运行资源使用量总周期数或总次数不小于设定的阈值,和/或当前程序运行资源占用率不小于设定的阈值,和/或当前中央处理器CPU占用率小于设定的阈值,和/或当前时间在设定的时间范围内;其中所述程序运行资源占用率不包括所述CPU资源占用率。2.如权利要求1所述的方法,其特征在于,根据所述大于0的差值总数与小于0的差值总数之差,判断是否存在程序运行资源泄漏,包括:若所述大于0的差值总数与小于0的差值总数之差大于设定的阈值,则确定存在程序运行资源泄漏。3.如权利要求1所述的方法,其特征在于,根据所述大于0的差值总数与小于0的差值总数之差,判断是否存在程序运行资源泄漏,包括:确定所述大于0的差值总数与小于0的差值总数之差的统计量Z;若Z大于设定的阈值,则确定存在程序运行资源泄漏。4.如权利要求3所述的方法,其特征在于,根据以下公式确定所述大于0的差值总数与小于0的差值总数之差S′的统计量Z:若n≥10,则其中,n为程序运行资源使用周期的个数;否则,其中,Rik为在第k个程序运行资源使用周期内采集的第i次程序运行资源使用量;Ril为在第l个程序运行资源使用周期内采集的第i次程序运行资源使用量;m为在每个程序运行资源使用周期内采集程序运行资源使用量的次数;其中,n,i,k,m均为正整数。5.一种判断程序运行资源泄漏的装置,其特征在于,包括:采集模块,用于在每个程序运行资源使用周期内采集至少一次程序运行资源使用量,并将采集的程序运行资源使用量传输至确定模块,其中,在每个程序运行资源使用周期内采集程序运行资源使用量的次数相同;所述程序运行资源使用周期为根据程序运行资源使用量的周期性规律设定的周期;确定模块,用于接收所述采集模块每次采集的程序运行资源使用量,并针对任意两个程序运行资源使用周期,确定在后周期内每次采集的程序运行资源使用量,与在前周期内对应次采集的程序运行资源使用量的差值,并将确定的各差值传输至判断模块,其中在后周期内每次采集的时间与在后周期的起始时间的时间差,和在前周期内对应次采集的时间与在前周期的起始时间的时间差在一个预设范围内;判断模块,用于接收所述确定模块确定的各差值,并根据在确定的各差值中大于0的差值总数与小于0的差值总数之差,判断是否存在程序运行资源泄漏;所述确定模块还用于,在确定在后周期内每次采集的程序运行资源使用量,与在前周期内对应次采集的程序运行资源使用量的差值之前,确定采集的程序运行资源使用量总周期数或总次数不小于设定的阈值,和/或当前程序运行资源占用率不小于设定的阈值,和/或当前中央处理器CPU占用率小于设定的阈值,和/或当前时间在设定的时间范围内;其中所述程序运行资源不包括所述CPU资源。6.如权利要求5所述的装置,其特征在于,所述判断模块具体用于:若所述大于0的差值总数与小于0的差值总数之差大于设定的阈值,则确定存在程序运行资源泄漏。7.如权利要求5所述的装置,其特征在于,所述判断模块具体用于:确定所述大于0的差值总数与小于0的差值总数之差的统计量Z;若Z大于设定的阈值,则确定存在程序运行资源泄漏。8.如权利要求7所述的装置,其特征在于,所述判断模块具体用于根据以下公式确定所述大于0的差值总数与小于0的差值总数之差S′的统计量Z:若n≥10,则其中,n为程序运行资源使用周期的个数;否则,其中,Rik为在第k个程序运行资源使用周期内采集的第i次程序运行资源使用量;Ril为在第l个程序运行资源使用周期内采集的第i次程序运行资源使用量;m为在每个程序运行资源使用周期内采集程序运行资源使用量的次数;其中,n,i,k,m均为正整数。9.一种预测程序运行资源使用情况的方法,其特征在于,包括:在每个程序运行资源使用周期内采集至少一次程序运行资源使用量;所述程序运行资源使用周期为根据程序运行资源使用量的周期性规律设定的周期;将采集的程序运行资源使用量分解成不同种资源分量,所述不同种资源分量为根据程序运行资源的使用规律,将程序运行资源使用量分解成的具有不同变化规律的组成部分;针对每一种资源分量中包含的数据,确定该资源分量的预测函数;根据确定的每种资源分量的预测函数确定程序运行资源总体预测函数;基于确定的总体预测函数,预测程序运行资源的使用情况。10.如...

【专利技术属性】
技术研发人员:李静辉龚学文袁健清
申请(专利权)人:华为技术有限公司
类型:发明
国别省市:广东;44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1