[发明专利]一种进程的内存溢出测试方法、装置及设备有效
申请号: | 201210528416.1 | 申请日: | 2012-12-10 |
公开(公告)号: | CN103049376A | 公开(公告)日: | 2013-04-17 |
发明(设计)人: | 汪文俊;闫昊 | 申请(专利权)人: | 北京小米科技有限责任公司 |
主分类号: | G06F11/36 | 分类号: | G06F11/36 |
代理公司: | 暂无信息 | 代理人: | 暂无信息 |
地址: | 100102 北京市朝阳区*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 进程 内存 溢出 测试 方法 装置 设备 | ||
技术领域
本发明涉及计算机技术领域,更具体地,涉及一种进程的内存溢出测试方法、装置及设备。
背景技术
内存泄露是指:用动态存储分配函数动态开辟的空间,在使用完毕后未释放,导致该内存单元一直被占据,无法被回收。存在内存泄漏问题的程序,一般表现方式是:该程序运行时间越长,占用内存越多,随着程序运行时间越来越长,就会导致内存泄露越来越严重,最后导致这个程序出现内存溢出(Out of Memory,简称OOM)。如果出现OOM,系统就会强制关闭此程序的进程。
为了防止程序存在内存泄漏的问题,需要对程序进行测试,以发现发生内存泄露的程序以及泄露的原因,从而对该程序进行改进。
然而,部分具有内存泄露缺陷的程序对应的进程在每次发生内存泄漏时泄露的内存比较小,因此,在有限的时间内,存在内存泄漏问题的进程可能不会发生OOM,这使得开发人员无法快速地测试出存在内存泄漏问题的进程,导致测试失效。
发明内容
本发明实施例提出了一种进程的内存溢出测试方法、装置及设备,能够较快速地重现进程的内存溢出错误。
为了达到上述目的,本发明实施例提出一种进程的内存溢出测试方法,包括以下步骤:
检测操作系统中各进程的内存使用量,将内存使用量满足预设条件的进程确定为被测试进程;
调低所述操作系统为进程预设的最大可使用堆空间,使所述被测试进程发生内存溢出。
本实施例中,通过检测进程的内存使用量确定被测试进程,并通过调低操作系统为进程预设的最大可使用堆空间来使被测试进程发生内存溢出,可以使存在内存泄漏问题的进程尽快地发生内存溢出,从而便于开发人员对存在内存泄漏问题的进程进行改进。
作为上述技术方案的优选,所述检测操作系统中各进程的内存使用量,将内存使用量满足预设条件的进程确定为被测试进程,采用如下步骤:
在预设时间内按照预设时间间隔获取操作系统中各进程的内存使用量;
将内存使用量呈上升趋势且上升最快的进程确定为被测试进程。
作为上述技术方案的优选,所述调低所述操作系统为进程预设的最大可使用堆空间,使所述被测试进程发生内存溢出的步骤包括:
每隔预设时间段将所述操作系统为进程预设的最大可使用堆空间调低预设值,直到所述被测试进程发生内存溢出。
作为上述技术方案的优选,调低所述操作系统为进程预设的最大可使用堆空间是通过设置虚拟机堆空间的值来实现。
作为上述技术方案的优选,所述使所述被测试进程发生内存溢出之后,所述方法还包括:
获取所述被测试进程发生内存溢出的出错信息;
其中,所述出错信息至少包括所述被测试进程对应的代码中导致所述被测试进程发生内存溢出的代码的位置。
本发明实施例还提出一种进程的内存溢出测试装置,包括:
确定模块,用于检测操作系统中各进程的内存使用量,将内存使用量满足预设条件的进程确定为被测试进程;
处理模块,用于调低所述操作系统为进程预设的最大可使用堆空间,使所述被测试进程发生内存溢出。
作为上述技术方案的优选,所述确定模块用于:
在预设时间内按照预设时间间隔获取操作系统中各进程的内存使用量;
将内存使用量呈上升趋势且上升最快的进程确定为被测试进程。
作为上述技术方案的优选,所述处理模块用于:
每隔预设时间段将所述操作系统为进程预设的最大可使用堆空间调低预设值,直到所述被测试进程发生内存溢出。
作为上述技术方案的优选,所述处理模块通过设置虚拟机堆空间的值来调低所述操作系统为进程预设的最大可使用堆空间。
作为上述技术方案的优选,所述装置还包括获取模块,用于所述使所述被测试进程发生内存溢出之后,获取所述被测试进程发生内存溢出的出错信息,其中,所述出错信息至少包括所述被测试进程对应的代码中导致所述被测试进程发生内存溢出的代码的位置。
本发明实施例还提出一种设备,所述设备包括:
一个或多个处理器;
存储器;和
一个或多个模块,所述一个或多个模块存储于所述存储器中并被配置成由所述一个或多个处理器执行,其中,所述一个或多个模块具有如下功能:
检测操作系统中各进程的内存使用量,将内存使用量满足预设条件的进程确定为被测试进程;
调低所述操作系统为进程预设的最大可使用堆空间,使所述被测试进程发生内存溢出。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京小米科技有限责任公司,未经北京小米科技有限责任公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201210528416.1/2.html,转载请声明来源钻瓜专利网。