【技术实现步骤摘要】
判断资源泄漏、预测资源使用情况的方法及装置
本专利技术涉及计算机应用领域,尤其涉及一种判断程序运行资源泄漏的方法及装置、一种预测程序运行资源使用情况的方法及装置。
技术介绍
程序运行资源,如内存、文件句柄、信号量、数据库连接池、线程池等是程序运行时需要的关键资源。在运行过程中,程序在需要使用程序运行资源时提出申请,在使用结束后及时释放所占用的程序运行资源;若没有及时释放已占用的程序运行资源,就会出现程序运行资源泄漏的问题。下面以内存泄漏为例,对程序运行资源泄漏的问题作具体说明。内存泄漏是指由于设计或编码问题等造成程序没有及时释放已经不再使用的内存,导致系统的可用内存越来越少,随着程序长时间运行,内存泄漏越来越严重,最终可能导致系统由于内存不足而使业务受损或中断。内存泄漏是程序运行过程中容易出现而又难以避免的问题,随着软件规模越来越大、复杂度越来越高,系统中出现内存泄漏的概率也越来越高。针对内存泄漏的问题,现有检测内存泄漏的方法之一是采用静态分析的方法,这种方法不需要运行程序,而是通过人工或自动化工具分析程序代码以检查代码中内存分配和释放的匹配情况。对于内存分配和释放的对应关系比较简单的情况,静态分析方法通常可以有效检测出潜在的内存泄漏,但对于内存分配和释放的对应关系比较复杂的情况,如在一个函数中分配内存,在另外一个甚至多个函数中释放对应的内存等,静态分析方法通常容易出现误报和漏报。现有检测内存泄漏的方法之二是在程序运行过程中动态监控内存的分配和释放,并结合对内存生命周期的判断来检测内存泄漏;一方面,该方法需要对程序中所有相关的内存分配和释放进行管理,并需要 ...
【技术保护点】
一种判断程序运行资源泄漏的方法,其特征在于,包括:在每个程序运行资源使用周期内采集至少一次程序运行资源使用量;其中,在每个程序运行资源使用周期内采集程序运行资源使用量的次数相同;所述程序运行资源使用周期为根据程序运行资源使用量的周期性规律设定的周期;针对任意两个程序运行资源使用周期,确定在后周期内每次采集的程序运行资源使用量,与在前周期内对应次采集的程序运行资源使用量的差值,其中在后周期内每次采集的时间与在后周期的起始时间的时间差,和在前周期内对应次采集的时间与在前周期的起始时间的时间差在一个预设范围内;根据在确定的各差值中大于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
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。