本发明专利技术公开了一种进程的内存溢出测试方法、装置及设备,其中,方法包括以下步骤:检测操作系统中各进程的内存使用量,将内存使用量满足预设条件的进程确定为被测试进程;调低所述操作系统为进程预设的最大可使用堆空间,使所述被测试进程发生内存溢出。本发明专利技术实施例通过检测进程的内存使用量确定被测试进程,并通过调低操作系统为进程预设的最大可使用堆空间来使被测试进程发生内存溢出,可以使存在内存泄漏问题的进程尽快地发生内存溢出,从而便于开发人员对存在内存泄漏问题的程序进行改进。
【技术实现步骤摘要】
本专利技术涉及计算机
,更具体地,涉及一种进程的内存溢出测试方法、装置及设备。
技术介绍
内存泄露是指用动态存储分配函数动态开辟的空间,在使用完毕后未释放,导致该内存单元一直被占据,无法被回收。存在内存泄漏问题的程序,一般表现方式是该程序运行时间越长,占用内存越多,随着程序运行时间越来越长,就会导致内存泄露越来越严重,最后导致这个程序出现内存溢出(Out of Memory,简称00M)。如果出现00M,系统就会强制关闭此程序的进程。为了防止程序存在内存泄漏的问题,需要对程序进行测试,以发现发生内存泄露的程序以及泄露的原因,从而对该程序进行改进。然而,部分具有内存泄露缺陷的程序对应的进程在每次发生内存泄漏时泄露的内存比较小,因此,在有限的时间内,存在内存泄漏问题的进程可能不会发生00M,这使得开发人员无法快速地测试出存在内存泄漏问题的进程,导致测试失效。
技术实现思路
本专利技术实施例提出了一种进程的内存溢出测试方法、装置及设备,能够较快速地重现进程的内存溢出错误。为了达到上述目的,本专利技术实施例提出一种进程的内存溢出测试方法,包括以下步骤检测操作系统中各进程的内存使用量,将内存使用量满足预设条件的进程确定为被测试进程;调低所述操作系统为进程预设的最大可使用堆空间,使所述被测试进程发生内存溢出。本实施例中,通过检测进程的内存使用量确定被测试进程,并通过调低操作系统为进程预设的最大可使用堆空间来使被测试进程发生内存溢出,可以使存在内存泄漏问题的进程尽快地发生内存溢出,从而便于开发人员对存在内存泄漏问题的进程进行改进。作为上述技术方案的优选,所述检测操作系统中各进程的内存使用量,将内存使用量满足预设条件的进程确定为被测试进程,采用如下步骤在预设时间内按照预设时间间隔获取操作系统中各进程的内存使用量;将内存使用量呈上升趋势且上升最快的进程确定为被测试进程。作为上述技术方案的优选,所述调低所述操作系统为进程预设的最大可使用堆空间,使所述被测试进程发生内存溢出的步骤包括每隔预设时间段将所述操作系统为进程预设的最大可使用堆空间调低预设值,直到所述被测试进程发生内存溢出。作为上述技术方案的优选,调低所述操作系统为进程预设的最大可使用堆空间是通过设置虚拟机堆空间的值来实现。作为上述技术方案的优选,所述使所述被测试进程发生内存溢出之后,所述方法还包括获取所述被测试进程发生内存溢出的出错信息;其中,所述出错信息至少包括所述被测试进程对应的代码中导致所述被测试进程发生内存溢出的代码的位置。本专利技术实施例还提出一种进程的内存溢出测试装置,包括确定模块,用于检测操作系统中各进程的内存使用量,将内存使用量满足预设条件的进程确定为被测试进程;处理模块,用于调低所述操作系统为进程预设的最大可使用堆空间,使所述被测试进程发生内存溢出。作为上述技术方案的优选,所述确定模块用于在预设时间内按照预设时间间隔获取操作系统中各进程的内存使用量;将内存使用量呈上升趋势且上升最快的进程确定为被测试进程。作为上述技术方案的优选,所述处理模块用于每隔预设时间段将所述操作系统为进程预设的最大可使用堆空间调低预设值,直到所述被测试进程发生内存溢出。作为上述技术方案的优选,所述处理模块通过设置虚拟机堆空间的值来调低所述操作系统为进程预设的最大可使用堆空间。作为上述技术方案的优选,所述装置还包括获取模块,用于所述使所述被测试进程发生内存溢出之后,获取所述被测试进程发生内存溢出的出错信息,其中,所述出错信息至少包括所述被测试进程对应的代码中导致所述被测试进程发生内存溢出的代码的位置。本专利技术实施例还提出一种设备,所述设备包括一个或多个处理器;存储器;和一个或多个模块,所述一个或多个模块存储于所述存储器中并被配置成由所述一个或多个处理器执行,其中,所述一个或多个模块具有如下功能检测操作系统中各进程的内存使用量,将内存使用量满足预设条件的进程确定为被测试进程;调低所述操作系统为进程预设的最大可使用堆空间,使所述被测试进程发生内存溢出。本专利技术实施例的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本专利技术而了解。本专利技术的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。下面通过附图和实施例对本专利技术实施例的技术方案做进一步的详细描述。附图说明附图用来提供对本专利技术实施例的进一步理解,并且构成说明书的一部分,与本专利技术的实施例一起用于解释本专利技术,并不构成对本专利技术实施例的限制。在附图中图1是本专利技术优选实施例提出的进程的内存溢出测试方法的流程图;图2是本专利技术一具体实施例提出的进程的内存溢出测试方法的流程图;图3是本专利技术另一具体实施例提出的进程的内存溢出测试方法的流程图;图4是本专利技术优选实施例提出的进程的内存溢出测试装置的结构示意图。具体实施例方式以下结合附图对本专利技术的优选实施例进行说明,应当理解,此处所描述的优选实施例仅用于说明和解释本专利技术实施例,并不用于限定本专利技术实施例。如图1所示为本专利技术优选实施例提出的一种进程的内存溢出测试方法,包括步骤Sll :检测操作系统中各进程的内存使用量,将内存使用量满足预设条件的进程确定为被测试进程;步骤S12 :调低所述操作系统为进程预设的最大可使用堆空间,使所述被测试进程发生内存溢出。本实施例中,通过检测进程的内存使用量确定被测试进程,并通过调低操作系统为进程预设的最大可使用堆空间来使被测试进程发生内存溢出,可以使存在内存泄漏问题的进程尽快地发生内存溢出,从而便于开发人员对存在内存泄漏问题的进程进行改进。下面通过其他具体实施例来对本专利技术实施例提出的进程的内存溢出测试方法进行详细说明。具体实施例一如图2所示,本实施例以安卓(Android)操作系统中的进程为例说明本专利技术实施例提出的进程的内存溢出测试方法进行说明。本专利技术实施例提出的进程的内存溢出测试方法可以实施为一个应用程序安装于用于测试的电脑中,该实施例包括以下步骤步骤S21 :在预设时间内按照预设时间间隔获取操作系统中各进程的内存使用量。在该步骤中,将装有Android操作系统的手机通过数据线与电脑连接,该电脑的操作系统例如为Linux,安装手机的驱动后,通过发送执行Linux系统的top命令的指令来实时获取Android操作系统中各进程的内存使用情况。例如,本实施例中通过执行top命令每隔一秒显示一次Android操作系统中各进程的内存使用情况。如表一、表二、表三和表四所示为连续四次获取的安卓系统中各进程的内存使用量(为了方便说明,表中仅列出了内存使用量为前五位的进程)。其中,进程标识(Process IDentity, PID)为进程编号,实际使用物理内存(Resident Set Size,简称RSS)为进程的内存使用量,Name为进程名称。表一本文档来自技高网...
【技术保护点】
一种进程的内存溢出测试方法,其特征在于,包括以下步骤:检测操作系统中各进程的内存使用量,将内存使用量满足预设条件的进程确定为被测试进程;调低所述操作系统为进程预设的最大可使用堆空间,使所述被测试进程发生内存溢出。
【技术特征摘要】
1.一种进程的内存溢出测试方法,其特征在于,包括以下步骤 检测操作系统中各进程的内存使用量,将内存使用量满足预设条件的进程确定为被测试进程; 调低所述操作系统为进程预设的最大可使用堆空间,使所述被测试进程发生内存溢出。2.根据权利要求1所述的方法,其特征在于,所述检测操作系统中各进程的内存使用量,将内存使用量满足预设条件的进程确定为被测试进程,采用如下步骤 在预设时间内按照预设时间间隔获取操作系统中各进程的内存使用量; 将内存使用量呈上升趋势且上升最快的进程确定为被测试进程。3.根据权利要求1所述的方法,其特征在于,所述调低所述操作系统为进程预设的最大可使用堆空间,使所述被测试进程发生内存溢出的步骤包括 每隔预设时间段将所述操作系统为进程预设的最大可使用堆空间调低预设值,直到所述被测试进程发生内存溢出。4.根据权利要求1或3所述的方法,其特征在于,调低所述操作系统为进程预设的最大可使用堆空间是通过设置虚拟机堆空间的值来实现。5.根据权利要求1所述的方法,其特征在于,所述使所述被测试进程发生内存溢出之后,所述方法还包括 获取所述被测试进程发生内存溢出的出错信息; 其中,所述出错信息至少包括所述被测试进程对应的代码中导致所述被测试进程发生内存溢出的代码的位置。6.一种进程的内存溢出测试装置,其特征在于,包括 确定模块,用于检测操作系统中各进程的内存使用量,将内存使用量满足预设条件的...
【专利技术属性】
技术研发人员:汪文俊,闫昊,
申请(专利权)人:北京小米科技有限责任公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。